for循环的输出是如何工作的

本文关键字:工作 何工作 循环 输出 for | 更新日期: 2023-09-27 18:02:17

嘿,伙计们,我测试了for循环的输出。但是我好像不明白这个输出是怎么变成11的?

public void button1_Click(object sender, EventArgs e)
{
        int i;
        for (i = 1; i <= 10; i += 2)
        {
        }
        MessageBox.Show("The number is " + i);
    }
}

之前我认为它代表1+3+5+7+9,但答案不是11。谁能帮我解释一下输出是怎么变成11的?这根本没有任何意义。

for循环的输出是如何工作的

你根本不清楚你在期待什么,但看看发生了什么:

  • i从1开始。1小于等于10,所以它进入循环体
    • 循环体不做任何事情
    • 在环体末端,i加2
  • i现在的值为3。3小于等于10,所以它进入循环体
    • 循环体不做任何事情
    • 在循环体末端,i增加2
  • i现在的值为5。5小于等于10,所以它进入循环体
    • 循环体不做任何事情
    • 在循环体结束时,i加2
  • i现在的值为7。7小于等于10,所以它进入循环体
    • 循环体不做任何事情
    • 在循环体结束时,i加2
  • i现在的值为9。9小于等于10,所以它进入循环体
    • 循环体不做任何事情
    • 在循环体结束时,i加2
  • i现在的值为11。11 不小于或等于10,因此循环终止
  • 打印1的值-它仍然是11

循环的最后一次迭代是当i = 9。循环在i += 2处结束,它将返回i = 11

本质上你的循环是不能终止的,因为它是通过结果迭代的方式。

您的i = 1值。

问题是你把i += 2 .

这会导致一个问题,因为它会遍历你所有的值,像这样:

  • i = 1: failed for your i <= 10 Loop will continue.
  • i = 3:失败,因为你的i <= 10仍然不符合标准,循环仍然迭代。
  • i = 5: failed for your i <= 10 not met, loop continue .
  • i = 7: failed for your i <= 10 not met, loop将继续。
  • i = 9: failed for your i <= 10仍然不符合你的标准

由于最后一次迭代失败,它实际上运行另一次。如果您试图让循环运行一定次数,则必须使用更简洁的数学表示来正确迭代。它没有在期望的次数内平衡i <= 10,所以它导致了一次额外的迭代。

但这就是为什么它是11,因为你的最后一个值不满足所满足的条件。

现在如果你想循环五次,你会想这样做:

int i;
for(i = 1, i <= 5, i +=1 );

你也可以这样做:

int i;
for(i = 5, i <= 20, i += 5);

我不确定这是否是你最初的目标与不同的数字,但希望这有助于。我可能加错了,但希望这能给你指明正确的方向。

for循环从1开始i,继续将2添加到i,直到i大于10为止。这在i == 11处第一次发生,所以循环退出,i仍然是11

如果将消息框放在循环中:

int i;
for (i = 1; i <= 10; i += 2)
{
  MessageBox.Show("The number is " + i);
}

则会得到5个消息框,值分别为1、3、5、7和9。

由于消息框在循环之后,您将得到一个带有变量在循环之后的值的消息框,即11