对于大于 12 的数字,阶乘给出错误答案

0 c factorial

用户输入一个数字,该数字将传递给 calcFactorial 函数。只要数字大于零,循环就会重复。该数字将乘以结果中存储的任何内容。每次重复循环时,x 都会减一。

当我测试它时,程序只能运行到 12。之后我会得到错误的数字。数字太大了吗?我不确定问题是什么。

#include <stdio.h>

long calcFactorial(int x){
    long result = 1;
    while(x > 0){
        result *= x;
        x--;
    }
    return result;
}
int main(){
    int x;
    printf("Enter a number: ");
    scanf(" %d",&x);
    printf("%d",calcFactorial(x));
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 5

printf("%d",calcFactorial(x));
Run Code Online (Sandbox Code Playgroud)

calcFactorial返回 a long,因此打印它的格式说明符应该是%ld而不是%d