#include<stdio.h>main(){ int n=0,i=1; double sum=0; for(n=0;n<20;n++) {i=i*(n+1); sum=sum+i; } printf("sum=%lf\n",sum); return 0;}运行结果:4563008025.000000找了很久,结果不对啊,到底哪错了呢?求大大解答下,万分感谢啊!我知道了,i定义为int太小了,因为后面有i=20!。- -,这些错误太难找了。
在32伟环境下,20的阶乘已经超出int的范围,而i是个int,必然会溢出,结果就是错误的
把i定义成double就行了