for循环的输出如何工作?

时间:2013-03-05 00:25:26

标签: c# for-loop

嘿伙计们,我有考试测试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?它没有任何意义。

5 个答案:

答案 0 :(得分:4)

根本不清楚你的期望是什么,但看看会发生什么:

  • 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

答案 1 :(得分:3)

循环的最后一次迭代是i = 9。循环终止于i += 2,它将为您提供i = 11

答案 2 :(得分:1)

基本上你的循环由于迭代结果的方式而无法终止。

您对i = 1的价值。

问题是你放了i += 2

这会导致问题的原因是因为它会像你这样经历所有的值:

  • i = 1i <= 10循环失败将继续。
  • i = 3:您的i <= 10仍然不符合条件,循环迭代仍然失败。
  • i = 5:您的i <= 10未达成,但循环继续失败。
  • i = 7:您的i <= 10未遇到问题仍然失败,循环将继续。
  • i = 9:您的i <= 10仍然不符合您的条件,但仍然失败。

由于最后一次迭代失败,它实际上又运行了一次。如果你试图使循环运行一定次数,你将不得不使用更简洁的数学表示来正确迭代。它不会在期望的次数内平衡i <= 10,因此会导致一次额外的迭代。

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

现在,如果你想要循环五次,你需要这样的东西:

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

你也可以这样做:

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

我不确定这是不是你最初的目标,但是希望这会有所帮助。我可能会添加错误,但希望能指出正确的方向。

答案 3 :(得分:0)

for循环在i处开始1,并不断向2添加i,在i大于{{}时停止1}}。这种情况首次发生在10,因此循环退出且i == 11仍为i

答案 4 :(得分:0)

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

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

然后你会得到五个消息框,其值为1,3,5,7和9。

由于消息框位于循环之后,您将获得一个消息框,其中包含变量在循环后的值,即11。