这是一个无限循环的原因是什么?难道不应该当
n
到达5时停止循环吗?int main()
{
int n = 1;
while (n <= 5)
cout << n ;
n++;
}
n
到达5时停止循环吗?int main()
{
int n = 1;
while (n <= 5)
cout << n ;
n++;
}
在while条件后面没有花括号。
这就是为什么只有cout << n;
一遍又一遍地执行。当你写while (something) doThis(); doThat();
或者if (something) doThis(); doThat();
时,只有 doThis()
在something
为真时才会被执行。
如果像下面这样写:
int n=1;
while (n<=5) {
cout << n;
++n;
}
int main()
{
int n = 1;
while (n <= 5)
{
cout << n ;
}
n++;
}
n++
不会被执行。
n
的值不会增加。这是因为n++;
不是循环的一部分。这就是它变成无限循环的原因。{ }
来指示代码块。while (n <= 5) {
cout << n;
n++;
}
n++;
是循环的一部分,每次迭代n
的值都会增加,最终当n
为6时控制流才会退出循环。n
为5时循环不会终止。它会在n
为6时终止,因为你要求循环在n<=5
时运行。所以即使n
为5时也会运行。
if
、while
、for
时,一定要使用花括号。一定要。虽然不这样做本身并不是一个错误,但错误也不远了。就我个人而言,我会更进一步地使用{ /* EMPTY */ }
,即使是对于空循环。起初可能看起来有点烦人,但它确实可以避免像这样的问题。"一个没有{}
的while
循环。让我们把它们放进去... 哦哦... 发现了一个 bug。" - DevSolar