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的?这根本没有任何意义。
你根本不清楚你在期待什么,但看看发生了什么:
-
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 youri <= 10
Loop will continue. -
i = 3
:失败,因为你的i <= 10
仍然不符合标准,循环仍然迭代。 -
i = 5
: failed for youri <= 10
not met, loop continue . -
i = 7
: failed for youri <= 10
not met, loop将继续。 -
i = 9
: failed for youri <= 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