2014-09-25 203 views
-2

我的目標是創建一個C++程序,它會重複執行一段代碼,直到用戶輸入適當的值並使用while循環執行。我的代碼只是一遍又一遍地重複着,即使我輸入「0」,它仍然會重複循環中的代碼塊。C++雖然循環中斷

這裏是我的源代碼:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int num = 0; 
    bool repeat = true; 
    while (repeat = true) 
    { 
     cout << "Please select an option." << endl; 
     cout << "[1] Continue Program" << endl; 
     cout << "[0] Terminate Program" << endl; 
     cout << "---------------------" << endl; 

     repeat = false; 

     cin >> num; 
     cout << endl; 

     if (num = 1) 
     { 
      repeat = true; 
      //execute program 
     } 
     else if (num = 0) 
      repeat = false; 
     else 
      cout << "Please enter an appropriate value."; 
    } 

    return 0; 

} 
+1

當您使用調試器逐行執行程序時,您發現了什麼? – 2014-09-25 02:23:07

回答

1
while (repeat = true) 

while情況下,您正在使用的賦值運算符=,沒有平等==

它是有效的C++語法,但不是您所期望的。 repeat被分配給true,所以條件總是如此。

if (num = 1)else if (num = 0)中存在相同的錯誤。

+0

切換所有警告並聽取它們? – 2014-09-25 02:25:17

+0

這是正確的答案,並且比其他更具描述性。 – Chantola 2014-09-25 02:25:31

+0

謝謝!我對編程相當陌生,所以非常感謝幫助! – 2014-09-25 02:28:08

2
while (repeat = true) 
       ^^ 

是你的問題之一:

while (repeat == true) 
       ^^ 

某項任務,條件計算結果始終爲真。

有人主張使用Yoda condition以避免這些錯別字。另一種方法是簡單地編譯您的程序的最高警告級別:

-Wall 
+0

切換所有警告並聆聽它們? – 2014-09-25 02:26:10

+0

@πάνταῥεῖ:事實上或者說,玩Yoda! ;-) – 2014-09-25 02:27:52

+0

Aww,綠色我在我臉上發現;-) ... – 2014-09-25 02:29:28

2

檢查您的運營商。您在while和if參數中使用賦值運算符=而不是比較運算符==