for循环的输出如何工作?
问题描述:
嘿家伙我有考试测试我for循环的输出。但我似乎没有得到它如何输出变成11?for循环的输出如何工作?
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 = 9
。循环终止于i += 2
,它会给你i = 11
。
答
的for
循环开始i
在1
,并保持增加2
到i
,停车时i
比10
更大。这是第一次发生在i == 11
,所以循环退出并且i
仍然为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
答
如果你把消息框内循环:
int i;
for (i = 1; i <= 10; i += 2)
{
MessageBox.Show("The number is " + i);
}
那么你将得到5个消息框中以数值1,3,5,7和9
作为消息框是在循环之后,你GE t单个消息框中的变量在循环后具有的值,即11.
答
实质上,由于循环遍历结果的方式,循环无法终止。您的价值为i = 1
。
问题是你已经把i += 2
。
这将导致一个问题,究其原因是因为它会经过所有你的价值观,像这样:
-
i = 1
:失败为您i <= 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);
我不知道如果这是你的原始目标不同的数字,但希望有所帮助。我可能会添加错误的,但希望这可以让您指向正确的方向。
非常感谢。 – Minelava 2013-03-05 00:33:59
你打败了我的描述为什么,很好的答案。 – Greg 2013-03-05 00:42:30