这段C语言程序您能帮我看看有什么问题吗?

2025年03月01日 11:46
有2个网友回答
网友(1):

50的阶乘很大了。。。用double吧。

#include 
int main()
{
    double sum = 1;
    int i = 1;
    for (; i <= 50; i++) {
        sum *= i; 
    }      
    printf("%02lf\n", sum);
    return 0;
}

网友(2):

是有效位数导致的

一般int是4个字节,数据的有效范围是-2,147,483,648 ~ 2,147,483,647

数据超过该类型可表示的范围大小就会翻转。

50的阶乘太大了,8字节的数据都存数不下来的,只能自己通过其他方法计算。