难以冀求 发表于 2020-5-6 16:55:41

(纯小白)输出结果错误

本帖最后由 难以冀求 于 2020-5-6 16:55 编辑

为什么出来的结果是0

#include <stdio.h>

int main()

{
        int a=2,i=1,s=1;
        while(i<=50)
        {
                i+=1;
                s*=a;
                a+=2;
        }
        printf("%d\n",s);
        return 0;
}


发不了图,下面是运行结果

0

--------------------------------
Process exited after 0.04836 seconds with return value 0
请按任意键继续. . .

zltzlt 发表于 2020-5-6 17:00:45

本帖最后由 zltzlt 于 2020-5-6 17:03 编辑

数据太大溢出了,每次循环打印一下就看得到,long long 也没用

#include <stdio.h>

int main()
{
    long long a = 2, i = 1, s = 1;
    while (i <= 50)
    {
      i += 1;
      s *= a;
      a += 2;
      printf("%lld\n", s);
    }
    printf("%lld\n", s);
    return 0;
}

永恒的蓝色梦想 发表于 2020-5-6 17:00:54

溢出了吧

qiuyouzhi 发表于 2020-5-6 17:01:48

你这个结果太大了,int装不下,所以结果为0.
改成long long int也没有用,所以,就是溢出了。

永恒的蓝色梦想 发表于 2020-5-6 17:02:19

zltzlt 发表于 2020-5-6 17:00
数据太大溢出了,每次循环打印一下就看得到,long long 也没用

就算一定溢出,你也应该 %lld 啊

难以冀求 发表于 2020-5-6 17:05:55

zltzlt 发表于 2020-5-6 17:00
数据太大溢出了,每次循环打印一下就看得到,long long 也没用

谢谢~

zltzlt 发表于 2020-5-6 17:06:01

永恒的蓝色梦想 发表于 2020-5-6 17:02
就算一定溢出,你也应该 %lld 啊

感谢指出{:10_245:}
页: [1]
查看完整版本: (纯小白)输出结果错误