C ++“OR”条件被忽略

时间:2017-04-03 17:34:37

标签: c++ loops

我的代码中有一个循环,如下所示:

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

它不起作用,我的循环变得不可阻挡。但是,如果我将代码更改为:

while (var != "q")

或者这个:

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

它会起作用。我做错了什么?

enter image description here

2 个答案:

答案 0 :(得分: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 :(得分:1)

由于变量只能有一个值,因此总是“不是'q'或不是'Q'”。