c语言 计算8!

main()
{int i,t;
t=1;
i=2;
while(i<=8)
{t=t*i;
i=i+1;
}
printf(“%d”,t);
}
这个程序在计算7!以前的都可以可是到了8!以后所有的结果都是负的了,哪个高手指教一下
main()
{long i,t;
t=1;
i=2;
while(i<=8)
{t=t*i;
i=i+1;
}
printf(“%d”,t);
}
还是不行

C整数范围(-32768~32767);8!=40320溢出啊,应改t为long型,并把printf("%d",t)中的"%d"改为"%ld".
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-08-11
main()
{
long i,t;
t=1;
i=2;
while(i<=8)
{t=t*i;
i=i+1;
}
printf(“%ld”,t);
}
第2个回答  2008-08-11
可能是益出了 检查下电脑内存
第3个回答  2008-08-11
int要改成long,%d也要改成%ld
第4个回答  2008-08-11
你用的TC吧,TC的int最大只有2字节。
你这里超出范围了,将int改成long可以解决。
相似回答
大家正在搜