while循环结果出错

检查了好几遍没看出来哪错了//求2乘以4乘以6一直乘到100
#include<stdio.h>
int main()
{
int n=1;
int chengji=1;
int a=2;
while(n<=50)
{
n=n+1;
chengji=chengji*a;
a=a+2;
}
printf("计算结果是%d\n",chengji);
return 0;
}

int类型装不下这么大的数字。


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

int 类型装不了这么大的数字,改成了6 就可以打印出来了 ,65535是上限

2
8
48
384
3840
46080
计算结果是46080

楼主的这个问题类似于阶乘,该问题等价于 50! * 2 ^ 50,这里涉及到大数阶乘的问题,可以参考 https://blog.csdn.net/L_J_Kin/article/details/52059399 这里面的代码