2015-05-13 59 views
0
#include <iostream> 
using namespace std; 
int main() 
{ 
    int num; 
    int count; 
    cout << "Enter a number: "; 
    cin >> num; 
    if(num>76) 
    { 
     cout<<"You lose!\n"; 
     break; 
    } 
    else 
     cout<<"Keep Trucking!\n "; 
    count++ 
} 

我一直在收到關於break的錯誤消息。編譯器告訴我:這個C++代碼有什麼問題? Break statement

break statement not within loop or switch 

我試圖仿效此代碼:

while (count <= 10) 
{ 
    cout << "Enter a number: "; 
    cin >> num; 
    if(num > 76) 
    { 
     cout<<"You lose!\n"; 
     break; 
    } 
    else 
     cout<<"Keep Trucking!\n "; 
    count++ 
} 
// break jumps to here 

爲什麼我嘗試編譯失敗,而這個例子中的作品?

+0

'namespace std;'是無效的C++。 '使用名稱空間std;'可能更符合你的要求。而且你不會從「if」塊中「分裂」。你從循環和開關中斷開。 – WhozCraig

+0

沒有那是一個轉錄錯誤。現在看看。我正在使用http://cpp.sh/來練習。 – Cetshwayo

+1

'break'只有在循環內纔有意義。 – Pradhan

回答

0

Here是來自MSDN的break語句的描述。

break語句結束最近的包含循環的執行或 條件語句的出現。如果有的話,控制傳遞給語句結尾處的 聲明。

註釋掉break語句,因爲您沒有使用while或for語句。

if(num>76) 
{ 
    cout<<"You lose!\n"; 
    //break; 
} 
+0

請詳細說明'break',OP可能不知道它在做什麼,在哪裏以及如何使用它。 – thelink2012

+0

你能解釋一下文中的說明嗎?我只是把它附在問題上。 – Cetshwayo

+0

添加了對中斷的描述。 –

3

錯誤消息說,這一切:

break語句不在循環或開關

只有兩個地方可以使用C++中的break聲明:在一個循環中(是否for,whiledo/while)和switch內。您的break既不符合這些標準,也是無效的。

請注意,您剛剛發佈的代碼的結構爲:

while (count <= 10) { // <== this loop encloses 
    ... 
    break;    // <== this break statement 
    ... 
} 

而你原來的例子有沒有循環。

0

您可能想要返回(1)來退出該功能。休息是用來'擺脫'一個循環。 IE如果你有一個'for'循環,你可以'打破'它並停止迭代。

換句話說,return語句將'打破'出這個函數,並得到你需要的相同結果。

在你的代碼中,沒有一個while循環。在你展示的例子中,有一個while循環。如果您試圖複製該代碼以進行學習,那麼您錯過了該行。

請注意,你可以返回任何東西。它不一定是1. return關鍵字只是您打算使用的中斷的替代方案。

+0

我只會因爲用戶丟失而拒絕返回除成功之外的任何內容。該計劃仍然像預期的那樣運行。 – chris

+0

好點。我沒有表現出特別的回報。只是在這種情況下,關鍵字返回是一個可選項。我編輯了我的答案以反映這一點。 –

0

您不能在if循環內放置break語句。您只能在forwhile之間使用跳轉語句,如breakcontinue。一個if語句只執行一次,而forwhile循環可能會持續一段時間(這就是爲什麼你想要breakcontinue)。

breakcontinue將執行最內循環的動作。具有以下代碼:

while (...) 
{ 
    for (;;) 
    { 
     if (...) 
     { 
      break; // this IS valid, because it will break from the for loop (only the for loop, not the while loop) 
     } 
    } 
}