无法理解这个无限循环的逻辑

时间:2016-03-14 12:56:05

标签: c++ infinite-loop

是什么让这成为无限循环?不应该n达到5并终止循环吗?

int main()
{

    int n = 1;
    while (n <= 5)

    cout << n ;
    n++;

}

3 个答案:

答案 0 :(得分:9)

while条件后没有花括号。

这就是为什么只有cout << n;一遍又一遍地执行 的原因。当您编写while (something) doThis(); doThat();if (something) doThis(); doThat();时,只有doThis()执行something,而int n=1; while (n<=5) { cout << n; ++n; } 为真时。

如果是这样写的

auto-generated

然后它不会是无限的

答案 1 :(得分:3)

因为您的代码等同于

int main()
{

    int n = 1;
    while (n <= 5)
    {
      cout << n ;
    }
    n++;

}

n++将不会被执行。

答案 2 :(得分:1)

在您的代码中,n的值不会增加(除非控件不在循环中)。这是因为n++;不是循环的一部分。这就是它成为无限循环的原因。

当有多个语句时,使用{ }表示代码块。

进行以下更改:

while (n <= 5) {      
   cout << n;      
   n++;    
}

在上面的代码中,n++;是循环的一部分,n的值随着每次迭代而递增,最后当n为6时,控件移出循环。

注意:n为5时,循环不会终止。当n为6时,它会终止,因为您在n<=5时要求循环运行。因此,即使n为5,它也会运行。