C语言新手问题求助

2025-02-26 17:52:42
推荐回答(2个)
回答1:

100的阶乘结果,数值太大,超出 int 的允许数值范围,所以结果不正确了。
你可以改用 double 型,可以得到10进制14位有效数字精度。
double a,b; 输出格式用e格式 printf("%e",a); 得结果: 9.332622e+157
若要精确计算,要用 “大数运算”程序,网上可以搜到。这里就不细说了。

回答2:

int类型取值范围为-2147483648 ~ 2147483647
超出范围会导致结果不正确,上面1x2x3x4x5..x100,早就超出范围了