首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for循环的输出是如何工作的?

问for循环的输出是如何工作的?
EN

Stack Overflow用户
提问于 2013-03-05 08:25:26
回答 5查看 96关注 0票数 2

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

代码语言:javascript
复制
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的?这根本没有任何意义。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-05 08:27:38

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

票数 3
EN

Stack Overflow用户

发布于 2013-03-05 08:28:16

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

  • i从1开始。1小于或等于10,所以它进入循环体
    • 。循环体在循环体结束时不做任何事情,
    • ,i递增1

​

  • i现在的值是3.3。3小于或等于10,因此它进入循环体
    • 。循环体在循环体结束时不做任何事情,
    • ,i按2

递增

​

  • i现在的值是5.5。5小于或等于10,所以它进入循环体,当循环体结束时,循环体
    • ,i被递增。

​

  • i现在的值是7. 7小于或等于10,所以它进入循环体,当循环体结束时,循环体
    • ,i被递增

​

  • i现在的值是9。9小于或等于10,所以它进入循环体,当循环体结束时,循环体
    • ,i被递增。

​

  • i现在的值是11.11。11不小于或等于10,所以输出1的循环terminates
  • The值-它仍然是11
票数 4
EN

Stack Overflow用户

发布于 2013-03-05 08:37:26

从本质上讲,由于循环遍历结果的方式,它无法终止。

您对i = 1的价值。

问题是你已经把i += 2。

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

  • i = 1:因您的continue.
  • i = 3:失败i <= 10循环将因i <= 10仍不满足条件而continue.
  • i = 3:失败,循环迭代still.
  • i = 5:因未满足i <= 10而失败,循环continues.
  • i = 7:因i <= 10未满足而失败,循环将因i <= 10仍不满足条件而失败。

由于上一次迭代失败,它实际上会在另一次运行。如果您试图让循环运行一定的次数,则必须使用更简洁的数学表示法才能正确迭代。它不会在期望的次数中平衡i <= 10,因此会导致一个额外的迭代。

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

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

代码语言:javascript
复制
int i;
for(i = 1, i <= 5, i +=1 );

您也可以像这样完成它:

代码语言:javascript
复制
int i;
for(i = 5, i <= 20, i += 5);

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15213669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档