阶乘超过13后结果就出错
include
int main()
{
int i,p,q;
i=2;
q=1;
printf("输入一个小于13的正整数:\n");
scanf("%d",&p);
if(p>=13||p<=0) //去除无法计算的输入
printf("无法计算该阶乘\n");
else {
while (i<=p)
{
q=q*i;
i=i+1;
}
printf("%d的阶乘结果为%d\n",p,q);
}
return 0;
}
int定义的值我记得最多2^32-1位数,应该换什么才能改变这个情况,计算大于等于13后的阶乘
你都知道int型太小了,那就换大类型啊
long,long long,double,decimal,很多类型可以用啊
把定义的int换成long,后面输出的%d换成%ld就好,定义长整型
13的阶乘超出int取值范围,改用long long类型。
unsigned int 的取值范围 0 ~ 2^32-1,13的阶乘已经超过这个类型的最大值了,如果还想要再大的整数,就只有 long long 了,8个字节的