2016-03-14 61 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