有关阶乘的问题,不知道哪里出错了。(C语言)

运行到12还是正确的,到13结果就是错的了。不知道哪里出问题了。请帮忙看一下,谢谢啦!

img

img

img

int 存不下溢出了

long long代替int

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    long long f = 1;
    for (int i = 1; i <= n; i++) {
        f *= i;
        printf("%-4d%-4lld\n", i, f);
    }
    return 0;
}
$ gcc -Wall main.cpp
$ ./a.out
20
1   1   
2   2   
3   6   
4   24  
5   120 
6   720 
7   5040
8   40320
9   362880
10  3628800
11  39916800
12  479001600
13  6227020800
14  87178291200
15  1307674368000
16  20922789888000
17  355687428096000
18  6402373705728000
19  121645100408832000
20  2432902008176640000