这个for循环如何工作?

时间:2015-01-23 02:47:04

标签: c++ for-loop

for (i=0;i<10,i++;) { cout<<i<<endl;}

这将编译,我将以1结束。

有人能告诉我这是如何工作的以及为什么这段代码会在i = 1而不是10时停止?

2 个答案:

答案 0 :(得分:2)

这里的简单答案是您的代码中存在错误。那就是说,让我解释一下这里发生了什么。

在C ++中,for语句由三个不同的表达式组成,用分号分隔。

for (expr1 ; expr2 ; expr3)

expr1在循环开始之前执行。它通常由变量声明或初始化组成。在您的循环中,“i = 0”

expr2是条件表达式。执行此表达式以确定循环体是否应该运行。如果此表达式的计算结果为true,则循环的主体将执行。每次循环执行时都会检查此项。在你的循环中,这是“i&lt; 10,i ++”,这是你的错误所在。我将在一秒钟之内再回过头来解释为什么它正在做它正在做的事情。

expr3通常用于增量。它在循环体之后执行,就在重新执行expr2之前。

所以...回到expr2。

在C ++中,逗号运算符执行左侧的表达式,但返回右侧的值。在这种情况下,这基本上意味着你的条件的值是“i ++”,这是i之前的值增加(“++ i”将是之后的值)。这意味着您的条件为“0”,但循环后的i值为“1”。

答案 1 :(得分:-3)

通过模拟,如果你想得到输出10,那么循环格式应该是(i = 0; i <10; i ++)。这个输出应该是 1 2 。 。 。 10

因此,您的语法适用于i = 0 add 1,其中i <10 因此输出1.除了从循环开始添加1值之外没有增量值。