C语言编程 2*4*6*8*……100,为何结果总是0?
答案:2 悬赏:70 手机版
解决时间 2021-01-12 01:42
- 提问者网友:缘字诀
- 2021-01-11 22:41
C语言编程 2*4*6*8*……100,为何结果总是0?
最佳答案
- 五星知识达人网友:慢性怪人
- 2021-01-11 23:16
这是因为这个计算结果太大了,应该有几百位数吧,如果以米为单位已经远远超过目前已知的宇宙直径了,用天文数字也无法形容这个数的巨大了。而在PC机上,别说int类型(最大值为32767),就是双精度浮点数double也无法精确表示这个数字。
如果是计算2*4*6*8*.....*40这倒是可以的:
#include
int main()
{
int n = 2;
double chengji = 1;
while (n <= 40)
{
chengji *= n;
n += 2;
}
printf("积为%0.0f
",chengji);
return 0;
}
如果是计算2*4*6*8*.....*40这倒是可以的:
#include
int main()
{
int n = 2;
double chengji = 1;
while (n <= 40)
{
chengji *= n;
n += 2;
}
printf("积为%0.0f
",chengji);
return 0;
}
全部回答
- 1楼网友:妄饮晩冬酒
- 2021-01-11 23:51
你把chengji和a换成long试试,结果已经超出int的最大值了,计算机做乘法的时候很多操作是<<因为这个数字远超int的最大值所以数字就全变成0了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯