求大神帮忙,这个程序为什么输入35之后的数字,输出就为0呢?
#include<stdio.h>int main()
{
long int i,n,s;
i=1;s=1;
scanf("%ld",&n);
while(i<=n)
{
s=s*i;
i++;
}
printf("%ld\n",s);
return 0;
} 本帖最后由 yuweb 于 2019-10-25 11:19 编辑
溢出了,long没办法存那么大的结果, VC6用_int64,其他的可用long long
#include<stdio.h>
int main()
{
long i,n;
_int64 s;//用_int64声明结果变量
i=1;s=1;
scanf("%ld",&n);
while(i<=n)
{
s=s*i;
i++;
}
printf("%I64d\n",s); //输出用%I64d
return 0;
}
页:
[1]