C语言: 输入一个数字,计算其阶乘(for循环)当数值大于某一个值时 为什么返回0

并且vs2010 在 for循环中 定义变量 i 时 生成解决方案错误! 提示 在上面 定义 变量时未添加" ; "

int main()
{
int n = 0;

int sum = 1, i = 0printf("input Number!!!\n");
    scanf("%d", &n);
for(i = 1; i <= n; i++)    //
    sum *= i;
printf("%d \n", sum);
getchar();
return 0;

}

long long sum = 1, i = 0printf("input Number!!!\n");
    scanf("%d", &n);
for(i = 1; i <= n; i++)    //
    sum *= i;
printf("%lld \n", sum);
getchar();
return 0;


溢出了,而且我怀疑计算到某个数值时结果恰好为0,所以之后的所有运算结果都为0了

原来是溢出了!!!MMMM的

int型算到 13!就超了。