关于c语言在vs2022运行阶乘的疑问。

问题遇到的现象和发生背景

我用的是vs2022 ,也是一个初学者。

问题相关代码,请勿粘贴

img


截图

运行结果及报错内容

我想问下为什么这几行代码只可以计算到12!,13!及以上的结果“1932053504”,但正确结果应该是“6227020800”

我的解答思路和尝试过的方法

int factorial(int n);
可能是这行代码的问题 但我在查证的时候发现网上

img

我想要达到的结果 所以如何运算13!及以上的阶乘结果 n为什么只可以求12,是哪里出了问题,求各位好汉解答。。还有c语言的版本更新替换相关信息在哪里看的到,例如scanf_s中加入-s的标准制订在什么地方,谢谢各位好汉解答

参考:

数值越界了,int 类型值上限就21亿多,换成 long long 就行了

数值溢出了,你把int改成long long,应该可以算到20以内的阶乘,如果要算更大数的阶乘,你得自己实现大数乘法了。

建議投向python陣營, 整型無上溢, 隨便算哈哈哈:

img

刚才又看了一会儿书,结合上面四位大佬的话 我发现是整数类型变量“int” 的问题 书中如是写道
(变量都有类型(如整数类型int),并在内存中占有一定的空间,例如在vc++中,整数变量占用4个字节的空间。因此,每个整数都有一定的取值范围。运行上述程序,输入整数13,其结果(13!)就超出了整数的取值范围,会出现一个错误的结果 )
所以要么改变变量类型 ,要么改变公式。但我现在还没有学到其他变量格式 所以我并不会LONG LONG 变量,我再学习一段时间再来回答我的答案。