为什么循环从2运行到7?
int i;
for(i=1;i<=6;printf("\n%d\n",i))
i++;
Run Code Online (Sandbox Code Playgroud)
这个的输出是
Run Code Online (Sandbox Code Playgroud)2 3 4 5 6 7
但限制i是6.
for循环的语法是
for (第1条;表达式-2;表达式-3)语句
执行如下,引用C11第6.8.5.3章,(强调我的)
表达式
expression-2是在每次执行循环体之前计算的控制表达式.在每次执行循环体后,表达式expression-3被计算为void表达式.[....]
在这里,i++是身体,printf("\n%d\n",i)是表达式-3.
所以,执行的顺序就像是
i = 1;
start loop
i < = 6 //==> TRUE
i++; //i == 2
printf // Will print 2 ///iteration 1 done
i < = 6 //==> TRUE
i++; //i == 3
printf // Will print 3 ///iteration 2 done
.
.
.
i < = 6 //==> TRUE
i++; //i == 6
printf // Will print 6 ///iteration 5 done
i < = 6 //==> TRUE
i++; //i == 7
printf // Will print 7 ///iteration 6 done
i < = 6 ==> FALSE
end loop.
Run Code Online (Sandbox Code Playgroud)