逻辑或优先级

时间:2015-03-02 15:02:34

标签: c++ operators

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

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

有人可以告诉我为什么该计划只接受1而不是0

2 个答案:

答案 0 :(得分:2)

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

应为while (A != 1 && A != 0);

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

答案 1 :(得分:0)

如果您想接受10,则需要将条件写为while(A != 1 && A != 0);。在您的条件编写时,它将首先评估(1 || 0),并且,1true0false,将评估为A != 1 }。