为什么此代码仅适用于&&而不适用||?使用||代替&&,该程序将永远继续运行

问题描述 投票:0回答:2
int main ()
{
string s;
    while ((s != "Y" && s != "y" && s != "N" && s != "n"))
    {
        cin >> s;
    }
    cout << "thank you!";
 }

为什么这不适用于“ or”而不是“ and”。两种语法在语法上似乎都有意义吗?

c++
2个回答
2
投票

让我们举个例子

Input -> Y
s != "Y"   --> false
s != "y"   --> true
s != "N"   --> true
s != "n"   --> true

如您所见,无论您输入什么,完整条件始终为真

false || true || true || true    --> true

0
投票

OR表达式评估true,如果一个或两个都是true

假设Ustring值的通用集合。

  • 对于表达式s != a,如果s属于{a}U的互补集,则结果为true。

  • 对于表达式s != b,如果s属于{b}U的互补集,则结果为true。

    现在我们将逻辑OR作为集合并集。如果我们在a != b时将这两个集合结合会发生什么?我们得到U

  • 所以无论s是什么,您的情况总会等于true

© www.soinside.com 2019 - 2024. All rights reserved.