50的阶乘很大了。。。用double吧。
#include
int main()
{
double sum = 1;
int i = 1;
for (; i <= 50; i++) {
sum *= i;
}
printf("%02lf\n", sum);
return 0;
}
是有效位数导致的
一般int是4个字节,数据的有效范围是-2,147,483,648 ~ 2,147,483,647
数据超过该类型可表示的范围大小就会翻转。
50的阶乘太大了,8字节的数据都存数不下来的,只能自己通过其他方法计算。