首页 > 解决方案 > 为什么 c++ && 运算符需要优先级

问题描述

test1() && test2() != test3();

在此示例中,尽管优先级!=高于&&评估顺序始终是: if test1()then test2 != test3()

为什么 c++ && 运算符需要优先级?您能否提供一个示例,其中操作员显示其隐私而不是评估?

标签: c++

解决方案


问题措辞具有误导性,我花了一段时间才理解 OP 在问什么。当优先级规则应用于此语句时,并且!=优先级高于&&,则意味着

test1() && test2() != test3();

语义上等价于

test1() && (test2() != test3());

而不是

(test1() && (test2()) != test3();

但是,如果设置了短路规则,编译器将首先执行test1(),当发现为 false 时,将不会执行test2()or test3()。这并不意味着不遵循优先规则。


推荐阅读