大一小白遇到的C语言题目,为什么对于m的位置不同,求出的结果不同,感觉m的位置对运算没有影响
题目是求1到20的阶乘之和,但是对于M=1在循环中的位置不同,编译器给出的结果也不同。
double i,j,n=0,m;
for(i=1;i<=20;i++){
m=1;
for(j=1;j<=i;j++){
m*=j;
n=m+n;}}
printf("%.0f",n);
这个结果是正确的,但是把M=1,移到循环外面的时候结果就错误了。。。求解
m定义放在循环体外面,意味着在第一层循环的时候,m初始化的值是动态变化的的,具体多少看下面的 m*=j。
而放在循环体内,则 m 在第一层循环初始化的值一直为1.