1!+2!+3!.......+20! 用C语言求结果,请精通C语言的进来看一下

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:35:11
请检查一下我这个是错在哪里
main()
{
long s,s1;
int i;
s=0,s1=1,i=1;
for(;i<=20;i++)
{
s1=s1*i;
s=s+s1;
}
printf("s=%ld\n",s);
getch();
}

为什么结果只有9位?long不是可以显示15位呢吗
当i=1,2,3,4的时候我用这个式子算结果是真确的,i太大的时候结果就显示不全了 最多显示9位

找到问题了,
你把long s,s1;改成double s,s1;
然后
printf("s=%ld\n",s);
改成printf("s=%.0f\n",s);

在不同系统中,long 和int 所占的位数是不一样的,所以还是用double类型吧
在windows xp机器上,int和long类型都是32位的

或者把long改成 unsigned long
不过可能还是不够……-.-!