逻辑OR优先级

Logical OR precedence

本文关键字:优先级 OR 逻辑      更新时间:2023-10-16

我曾尝试编写一个循环,该循环会阻止用户使用||运算符向程序中输入错误类型的数据(实际上是布尔值)。

int Entrer() 
{
    int A;
    do
    {
        cout<<"Entrez 0 ou 1."<<endl;
        cin >> A;
    }
    while (A != (1 || 0));
    return A;
}

有人能告诉我为什么这个程序只接受1而不接受0吗?

do { ... } while (A != (1 || 0));

应该是while (A != 1 && A != 0);

否则,A != (1 || 0)代表A != 1,因为(1 || 0)是在!=之前评估的。

如果要接受10,则需要将条件写为while(A != 1 && A != 0);。当您编写条件时,它将首先计算(1 || 0),并且由于1true0false,它将计算为A != 1