我是 C++ 新手,很好奇编译器如何处理 bool 值的惰性求值。例如,
if(A == 1 || B == 2){...}
如果 A 等于 1,那么 B==2 部分是否曾被评估过?
最佳答案
不,不评估 B==2
部分。这称为 short-circuit evaluation 。
编辑: 作为 Robert C. Cartaino rightly points out ,如果逻辑运算符过载,则不会发生短路评估(已经说过,为什么有人会使逻辑运算符过载,这超出了我的理解)。
关于 bool 值的 C++ 短路,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1799072/