c++ - () 的优先级不大于 &&

标签 c++ operator-precedence

在下面的代码中,

int main() {
    int a =1, b = 2, c = 3;
    if(((a++) == 5) && ((b++) == 5) && ((c++) == 5)) {
        cout<<"inside if"<< endl; // prints !!!Hello World!!!
    }
    cout<<a<<b<<c<<endl;
    return 0;
}

所有的自增操作都应该在逻辑操作之前完成。但是执行会跳过增量 b 和 c。为什么逻辑 && 优先于 ()?顺便说一下,这段代码的结果是 223

最佳答案

由于短路:当&& 的左侧为false 时,右侧不会被计算。另一方面,优先级是你认为它应该是的方式(并且,正如 AnT 所说,它与你所看到的行为无关): () 优先于 &&

(类似地,当 || 的左侧为 true 时,右侧不被评估。)

关于c++ - () 的优先级不大于 &&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31130353/

相关文章:

c - 为什么这些构造使用增量前和增量后未定义的行为?

c - 后缀增量运算符评估

c - "sizeof"的结果取决于括号的位置。为什么?

c++ - 链式ostream内部行为及其在MSVC上的结果(与Clang相比)

javascript - 为什么 Javascript 运算符 "&&"这么奇怪?

c++ - 将一个类的默认值初始化为另一个c++

c++ - 从父类(super class)对象数组调用子类方法

c++ - QInputDialog 参数默认值

c++ - sal 缓冲区注释上的额外下划线 ( _ ) 是什么?

c++ - 通过哈夫曼表重建哈夫曼树