Ale*_*lme 45 c++ short-circuiting and-operator logical-and
当遇到(bool1 && bool2)时,如果发现bool1为false,c ++是否会尝试检查bool2,或者它是否像PHP那样忽略它?
对不起,如果它是一个问题的基础,但我真的无法在Schildt或互联网上找到这一点.
jas*_*son 56
是的,&&
C++中的运算符使用短路评估,因此如果bool1
对其进行评估,false
则无需进行评估bool2
.
"短路评估"是您希望Google在索引中查找的奇特术语.
Tim*_*Tim 30
C++确实使用短路逻辑,因此如果bool1
为false,则不需要检查bool2
.
如果bool2实际上是一个返回bool或使用指针的函数,这很有用:
if ( pointer && pointer->someMethod() )
Run Code Online (Sandbox Code Playgroud)
没有短路逻辑,它会在取消引用NULL指针时崩溃,但是使用短路逻辑,它可以正常工作.