C语言大神请进

为什么30的阶乘成负的了😱帮忙看看哪有问题

因为溢出了。在32位编译器中int型的长度是4字节,范围是-2,147,483,648~2,147,483,647。而30!超出了int能表示的最大值造成溢出。
解决办法:换用无符号整型(unsigned int型),或者采用高精度乘法。追问

谢谢啦

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-29
30!是一个长度为33位的整数,已经远远超出了long int的值域,所以不可以用普通的基本类型和运算方式表达。
第2个回答  2015-01-29
30的阶乘越界了
int类型最多能表示9-10位的整数
相似回答