求2×4×6到×100,为什么运行结果为0?

#include<stdio.h>
int main()
{
int chengji=1,n=1,a=2;
while(n<=50)
{
n=n+1;
chengji=chengji*a;
a=a+2;
}
printf("%d\n",chengji);
return 0;
}

数值太大越过了int值的范围,对成绩定义使用double型试试
int型:

img


double型:

img

超出了int类型存储范围。int chengji=1改为long long chengji=1类型。

img

#include<stdio.h>
int main()
{
long long chengji=1,n=1,a=2;
while(n<=30)
{
n=n+1;
chengji=chengji*a;
a=a+2;
}
printf("%lld\n",chengji);
return 0;
}

因为中间溢出了,所以后面全是0
阶乘的增长速度极快,用int基本装不下
#有帮助望采纳

img

#include <stdio.h>
int main()
{
    int chengji = 1, n = 1, a = 2;
    while (n <= 50)
    {
        n = n + 1;
        chengji = chengji * a;
        printf("%d\n",chengji);
        a = a + 2;
    }
    printf("%d\n", chengji);
    return 0;
}

chengji的数值超出了int类型的范围,把chengji的类型改成double类型

int有数值范围,好似一个杯子,只能装这么点数
float或者是long如同大桶,可以容纳更大的数字
源码中的变量申明只要把“int”的地方都改成改为“long”或者是“float”应该就行了