int main ()
{
string s;
while ((s != "Y" && s != "y" && s != "N" && s != "n"))
{
cin >> s;
}
cout << "thank you!";
}
为什么这不适用于“ or”而不是“ and”。两种语法在语法上似乎都有意义吗?
让我们举个例子
Input -> Y
s != "Y" --> false
s != "y" --> true
s != "N" --> true
s != "n" --> true
如您所见,无论您输入什么,完整条件始终为真
false || true || true || true --> true
OR表达式评估true
,如果一个或两个都是true
假设U
是string
值的通用集合。
对于表达式s != a
,如果s
属于{a}
中U
的互补集,则结果为true。
对于表达式s != b
,如果s
属于{b}
中U
的互补集,则结果为true。
现在我们将逻辑OR
作为集合并集。如果我们在a != b
时将这两个集合结合会发生什么?我们得到U
。
所以无论s
是什么,您的情况总会等于true
。