2017-04-03 236 views
1

條件我在我的代碼的循環,它看起來像:C++「或」被忽略

string var = "" 
while (var != "q" || var != "Q") 
{ 
... 
cin >> var; 
} 

它不工作,我的循環變得勢不可擋。但是,如果我我的代碼改成這樣:

while (var != "q") 

或本:

while (var == "q" || var == "Q") 

它`要去工作。我究竟做錯了什麼?

enter image description here

+5

var!=「q」|| var!=「Q」始終爲真。 –

+1

當你輸入'q'時,你會得到:「q」!=「q」|| 「q」!=「Q」==> false || true ==> true,當你輸入'Q' ==> true ||時是一樣的false ==> true –

+1

也許你的意圖要求你用'while(var!=「q」&& var!=「Q」)'? – billyhoes

回答

4
while (var != "q" || var != "Q") 

寫簡單的英語,這樣說:雖然var不等於qvar不等於Q運行這個循環。

這將始終返回true,因爲var將始終不是qQ(它不能同時都是)。

您的其他條件起作用,因爲他們正在檢查正確的事情。

while (var != "q") 

雖然var不等於q運行這個循環。

while (var == "q" || var == "Q") 

雖然var等於qvar等於Q運行這個循環。

您正在查找的條件是使用and運算符。

while(var != 'q' && var != 'Q') 

雖然var不等於qvar不等於Q運行這個循環。如果var轉到qQ,循環將退出。

1

由於變量只能有一個值,它是總是 「不是 'q' 或 'Q'」。