永发信息网

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;
}
全部回答
  • 1楼网友:妄饮晩冬酒
  • 2021-01-11 23:51
你把chengji和a换成long试试,结果已经超出int的最大值了,计算机做乘法的时候很多操作是<<因为这个数字远超int的最大值所以数字就全变成0了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯