何时执行增量表达式

use*_*343 -1 c# for-loop increment

请告诉我为什么这个C#for循环执行后的sum值是20而不是30:

for (int i = 2; i < 10; i += 2)
{
    sum += i;
}
Run Code Online (Sandbox Code Playgroud)

在我看来,在第一次迭代结束时,我将是2和2,在第二次结束时我将是4和6,然后是6和12,然后是8和20.然后,当循环时开始进入第5次迭代,我仍然会在8时小于10,所以我会增加到10并且sum将是20 + 10 = 30.然后下一次i = 10,所以执行停止.但答案是20.为什么循环不进入第5次迭代?请温柔地对待我.

非常感谢您的启发.

Ste*_*eve 11

该循环被执行4 times,当i2, 4, 6,8
总为20.

这里没有什么可以解决的谜.当i达到10for条件的评估i < 10为假时,因此,10永远不会添加到sum变量中

要完成答案,for陈述的逻辑很简单:

  • 设置控制退出表达式的变量的初始值 (i=2)
  • 评估退出表达式,如果为true则输入for body,如果为false则退出 (i < 10)
  • 执行for body { ... whatever... }
  • 增加所需步骤的变量 (i+=2)
  • 从评估退出表达式重新启动