鱼C论坛

 找回密码
 立即注册
查看: 2860|回复: 8

[已解决]累乘问题

[复制链接]
发表于 2018-4-11 22:52:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
int main()
{
        long int i , s, n , m;
        i = 1 , s = 1 , m =0;
        printf("input number:\n");
        scanf("%ld",&n);
        for(i=1;i<=n;i++)
       
        {        s *= i;
                m += i;
        }
       

                printf("这个数的阶乘=%ld\n", s);
                printf("累加=%ld\n",m);
       
}
为什么很大的数的累乘为零
最佳答案
2018-4-13 07:17:18
不主动 发表于 2018-4-12 19:36
还是不对呢

数据类型小了,阶乘到10就已经非常大了,用long double试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-11 23:02:17 | 显示全部楼层
因为数值太大溢出了吧。。。。。。。。
long int范围是-2147483648~+2141483647
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-12 06:51:49 From FishC Mobile | 显示全部楼层
数据溢出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-12 13:11:23 | 显示全部楼层
Charles未晞 发表于 2018-4-11 23:02
因为数值太大溢出了吧。。。。。。。。
long int范围是-2147483648~+2141483647

怎么个改法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-12 13:34:22 | 显示全部楼层
数据类型都是有一定的范围的,具体可以看小甲鱼的带你学c带你飞的扩展阅读和读书笔记,那个说的很是详细的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-12 15:57:06 | 显示全部楼层

简单来说,定义的类型允许到一定的范围数值,但是你超过了这个范围,当然就出来了(数据溢出)。
int 不够了用 long int 不够用char存储吧  总会有上限值的 如果变量的话 适当也加大内存大小
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-12 16:30:50 | 显示全部楼层
数据太大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-12 19:36:50 | 显示全部楼层
理想小青年 发表于 2018-4-12 15:57
简单来说,定义的类型允许到一定的范围数值,但是你超过了这个范围,当然就出来了(数据溢出)。
int 不 ...

还是不对呢  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-13 07:17:18 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
不主动 发表于 2018-4-12 19:36
还是不对呢

数据类型小了,阶乘到10就已经非常大了,用long double试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 19:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表