[求助]谁给我纠正一下我的程序????快呀!!谢谢!!
求解20!#include "stdio.h"
main()
{
long int mul;
int n;
for(n=1,mul=1;n<=20;n++)
{
mul*=n;}
printf("\nmul=%ld",mul);
}
我就不懂为什么运行结果不对????
2007-08-19 20:23
2007-08-19 20:30

2007-08-19 20:40
对,C中long最大取2的31次方减1. 20!早就超了。
但是我还有个问题:
用这个程序算出来
15的阶乘=2004310016,
16的阶乘=2004189184,
两者都和long的最大值很接近,可是它们应该是16倍的关系呀?
为什么

2007-08-19 20:58
2007-08-19 21:04
对,C中long最大取2的31次方减1. 20!早就超了。
但是我还有个问题:
用这个程序算出来
15的阶乘=2004310016,
16的阶乘=2004189184,
两者都和long的最大值很接近,可是它们应该是16倍的关系呀?
为什么
这只能说明算到16!以前已经溢出了~~~好像在14!就溢出了
[此贴子已经被作者于2007-8-19 21:18:21编辑过]

2007-08-19 21:16
2007-08-19 22:14
我先试一下,先谢谢各位了!!!
2007-08-20 18:52
2007-08-20 19:02