【问题标题】:How does this output for the for loop works?for 循环的这个输出是如何工作的?
【发布时间】:2013-03-05 00:25:26
【问题描述】:

大家好,我正在测试 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 的?一点意义都没有。

【问题讨论】:

    标签: c# for-loop


    【解决方案1】:

    完全不清楚您的期望是什么,但看看会发生什么:

    • 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

    【讨论】:

    • 你打败了我的原因,很好的答案。
    【解决方案2】:

    循环的最后一次迭代是i = 9。循环以i += 2 结束,这将为您提供i = 11

    【讨论】:

      【解决方案3】:

      本质上,您的循环由于迭代结果的方式而无法终止。

      您对i = 1 的价值。

      问题是你输入了i += 2

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

      • i = 1i &lt;= 10 失败循环将继续。
      • i = 3:您的 i &lt;= 10 失败仍然不符合条件,循环仍在迭代。
      • i = 5:你的 i &lt;= 10 失败,循环继续。
      • i = 7:因为你的i &lt;= 10 失败,没有遇到,循环将继续。
      • i = 9:您的i &lt;= 10 失败仍然不符合您的标准。

      由于最后一次迭代失败,它实际上又运行了一次。如果您尝试让循环运行一定次数,则必须使用更简洁的数学表示来正确迭代。它不会在所需的次数内平衡i &lt;= 10,因此会导致额外的一次迭代。

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

      现在如果你想让循环执行五次,你会想要这样的:

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

      你也可以这样完成:

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

      我不确定这是否是您使用不同数字的最初目标,但希望这会有所帮助。我可能会添加错误,但希望这会为您指明正确的方向。

      【讨论】:

        【解决方案4】:

        for 循环在1 处开始i,并不断将2 添加到i,当i 大于10 时停止。这是第一次在i == 11 发生,因此退出循环并且i 仍然是11

        【讨论】:

          【解决方案5】:

          如果你把消息框放在循环里面:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多