我几乎想在 C 中做 1/2 + 2/3 +...+ 18/19 + 19/20 ,这是我的代码:
版本 1:
int main(){
double i,j,sum;
for(i=1,j=2,sum=0; i<=19 && j<=20; i++, j++)
sum+=i/j;
printf("%f\n",sum);
return 0;
}
版本 1 输出:16.402260
版本 2:
int main(){
double i,j,sum;
for(i=1,j=2,sum=0; i<=19 && j<=20; sum+=i/j, i++, j++)
printf("%f\n",sum);
return 0;
}
版本 2 输出:
0.000000
0.500000
1.166667
1.916667
2.716667
3.550000
4.407143
5.282143
6.171032
7.071032
7.980123
8.896789
9.819866
10.748438
11.681771
12.619271
13.560447
14.504892
15.452260
版本 3:
int main(){
double i,j,sum;
for(i=1,j=2,sum=0; i<=19 && j<=20; sum+=i/j, i++, j++)
;
printf("%f\n",sum);
return 0;
}
版本 3 输出:
16.402260
我对为什么版本 1 和 3 可以工作而版本 2 不工作的原因感到困惑,因为版本 2 和版本 3 非常相似,除了版本 3 的 for 循环包含和空正文而版本 2 不包含这一事实。