c++ - 为什么 c++ && 运算符需要优先级
问题描述
test1() && test2() != test3();
在此示例中,尽管优先级!=
高于&&
评估顺序始终是: if test1()
then test2 != test3()
。
为什么 c++ && 运算符需要优先级?您能否提供一个示例,其中操作员显示其隐私而不是评估?
解决方案
问题措辞具有误导性,我花了一段时间才理解 OP 在问什么。当优先级规则应用于此语句时,并且!=
优先级高于&&
,则意味着
test1() && test2() != test3();
语义上等价于
test1() && (test2() != test3());
而不是
(test1() && (test2()) != test3();
但是,如果设置了短路规则,编译器将首先执行test1()
,当发现为 false 时,将不会执行test2()
or test3()
。这并不意味着不遵循优先规则。