我的代码中有一个循环,如下所示:
string var = ""
while (var != "q" || var != "Q")
{
...
cin >> var;
}
它不起作用,我的循环变得不可阻挡。但是,如果我将代码更改为:
while (var != "q")
或者这个:
while (var == "q" || var == "Q")
它会起作用。我做错了什么?
答案 0 :(得分:4)
while (var != "q" || var != "Q")
用简单的英文写道,这说:var
不等于q
或var
不等于Q
,请执行此循环。
这将始终返回true,因为var
始终不是q
或Q
(它不能同时为两者)。
你的其他条件有效,因为他们正在检查正确的事情。
while (var != "q")
虽然var
不等于q
,但运行此循环。
while (var == "q" || var == "Q")
当var
等于q
或var
等于Q
时,请运行此循环。
您正在寻找的条件是使用and
运算符。
while(var != 'q' && var != 'Q')
虽然var
不等于q
且var
不等于Q
,但运行此循环。如果var
转到q
或Q
,则循环将退出。
答案 1 :(得分:1)
由于变量只能有一个值,因此总是“不是'q'或不是'Q'”。