那是有效的表达吗?如果是这样,您可以重写它以使其更有意义吗?例如,它与(4 > y && y > 1)一样吗?您如何评估链式逻辑运算符?

最佳答案

语句(4 > y > 1)解析为:

((4 > y) > 1)

比较运算符<> evaluate left-to-right
4 > y根据其是否为真返回01

然后将结果与1。

在这种情况下,由于01从不超过1,因此整个语句将始终返回false

但是有一个异常(exception):

如果y是一个类,并且>运算符已被重载以执行不同寻常的操作。然后一切都变了。

例如,这将无法编译:
class mytype{
};

mytype operator>(int x,const mytype &y){
    return mytype();
}

int main(){

    mytype y;

    cout << (4 > y > 1) << endl;

    return 0;
}

关于c++ - (4> y> 1)在C++中是否有效?如果是这样,您如何评价?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8889522/

10-14 19:39