2016-03-14 59 views
3

什么使得这个无限循环? n不应该达到5并终止循环?无法理解这个无限循环的逻辑

int main() 
{ 

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

    cout << n ; 
    n++; 

} 
+3

一个正确的缩进会帮助你:http://coliru.stacked-crooked.com/a/f309338c53842b13 –

+2

@Revolver_Ocelot当我跟随链接我看到一个空白页 – user463035818

+2

@ tobi303只需稍等一会儿,从无限循环程序,它需要一段时间来加载 – Garf365

回答

9

还有的while条件后没有大括号内。

这就是为什么只有cout << n;执行一遍又一遍。当你写while (something) doThis(); doThat();if (something) doThis(); doThat();时,只有doThis()被执行while(或if)something为真

如果是这样写的

int n=1; 

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

那么它不会是无限

1

在你的代码中,n价值将得不到递增(除非控制退出循环)。这是因为n++;不是循环的一部分。这就是它成为无限循环的原因。

使用{ }指示有多个语句时的代码块。

进行以下改变:

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

在上面的代码,n++;是环路的一部分和n增量每次迭代和最后控制移出循环的值时n是6 。

注:n是5,因为你问循环运行n<=5当它结束时n是6循环将不会终止。所以,因为你的代码就相当于

int main() 
{ 

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

} 

n++将不会被执行,将运行,即使n是5