C语言求阶乘,13以后的阶乘结果就不对了,有大佬可以帮忙看看是怎么回事吗?

这是阶乘的代码:

        #include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    long long fact=1;
    int i=1;
    for(i=1;i<=n;i++)
    {
        fact*=i;
    }
    printf("%d!=%d\n",n,fact);
    return 0;
}

1到12的阶乘都是对的,但是13开始就是错误的结果,但是 long long型的数据并没有超出取值范围,有大佬知道是为什么吗?

阅读 3.5k
1 个回答
printf("%d!=%llu\n", n, fact);

%llu : unsigned long long

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进