在下面的代码中,
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/