3

可能重复:
为什么我们通常使用||not |,有什么区别?

例子:

if(a && b && d)
{
...
}

我需要找出一种语言是否支持检查 if 语句中的所有条件,即使“b”失败。这个概念叫什么?

4

3 回答 3

14

不,Java 和 C++ 都不会评估d. 这是短路评估

于 2012-05-24T22:45:52.567 回答
3

不,二元逻辑运算符是短路的。他们从左到右评估他们的操作数。如果其中一个操作数的计算结果使表达式为假,则不会计算其他操作数。

于 2012-05-24T22:46:43.937 回答
3

标准二进制操作 && 和 || 被短路。如果要强制双方进行评估,请使用 & 或 | 而不是 && 和 ||。例如

public class StackOverflow {

   static boolean false1() {
      System.out.println("In false1");
      return false;
   }

   static boolean false2() {
      System.out.println("In false2");
      return false;
   }

   public static void main(String[] args) {
      System.out.println("shortcircuit");
      boolean b = false1() && false2();

      System.out.println("full evaluation");
      b = false1() & false2();
   }
}
于 2012-05-24T22:54:35.387 回答