我是 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/

10-13 07:10