在Java中,我使用
if (a != null && a.fun());
通过充分利用短路评估和表达从左到右进行评估?
在C ++中,我可以这样做吗?它们是否可以保证在不同平台和编译器之间移植?
if (a != 0 && a->fun());
答案 0 :(得分:38)
是的,保证“内置”类型。但是,如果你超载&&或||对于您自己的类型,不执行短路评估。出于这个原因,重载这些运算符被认为是一件坏事。
答案 1 :(得分:10)
是。 &安培;&安培;和|| C和C ++中的短路;它符合标准。
另请参阅:Is short-circuiting logical operators mandated? And evaluation order?