ANSI 标准的 授权逻辑运算符是否在 C 或 C + + 中短路?
我很困惑,因为我记得 K & R 的书上说,你的代码不应该依赖于这些操作短路,因为它们可能不会。有没有人能告诉我,在标准中,逻辑操作总是短路?我最感兴趣的是 C + + ,一个同样适用于 C 的答案会很棒。
我还记得读到(不记得在哪里) ,计算顺序没有严格定义,所以你的代码不应该依赖或假定表达式中的函数将按特定的顺序执行: 在语句结束时,所有被引用的函数都将被调用,但编译器可以自由选择最有效的顺序。
标准是否指明了这个表达式的求值顺序?
if( functionA() && functionB() && functionC() ) cout<<"Hello world";