YYCYYCYYC 发表于 2019-10-25 00:23:25

求大神帮忙,这个程序为什么输入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:13:17

本帖最后由 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]
查看完整版本: 求大神帮忙,这个程序为什么输入35之后的数字,输出就为0呢?