求10!

King_NaNa 2007-04-15 02:43:19

#include<stdio.h> /*2~7是正确的*/
void main()
{
int i,t;
t=1;
i=2;
while(i<=10)
{
t=t*i;
i=i+1;
}
printf("%d\n",t);
}
这个代码求2~~7是正确的~为什么求7以外的就不对了~!
请大家帮帮小弟~~
谢谢您了`
...全文
310 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
awl005 2007-04-16
  • 打赏
  • 举报
回复
看来楼主用的是16位编译器

把int 换成long吧
WinWing 2007-04-16
  • 打赏
  • 举报
回复
10! < 12000000
long倒还应付的来
双杯献酒 2007-04-15
  • 打赏
  • 举报
回复
把int 改成 long 看看
tianqiao2006 2007-04-15
  • 打赏
  • 举报
回复
肯定是溢出了,阶乘的数值都比较大,很容易溢出的
飞哥 2007-04-15
  • 打赏
  • 举报
回复
这个数可不小
120*6*7*8*9*10
chensanniang 2007-04-15
  • 打赏
  • 举报
回复
由于结果大于INT的范围是-32768---32767,所以会溢出,可以改为:#include<stdio.h> /*2~7是正确的*/
void main()
{
int i;double t;
t=1.0;
i=2;
while(i<=10)
{
t=t*i;
i=i+1;
}
printf("%f\n",t);
}
kouzhongling 2007-04-15
  • 打赏
  • 举报
回复
溢出?
loongee 2007-04-15
  • 打赏
  • 举报
回复
就是溢出的,阶乘数是很大的,要表示阶乘结果一般都用unsigned long或者double。
因为unsigned long的表示范围可以到2147483647,也就是最大到12的阶乘。
而double可以表示到1.7*10~308,也就可以表示到170的阶乘。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧