可能重复:
Why do we usually use||
not|
, what is the difference?
示例:
if(a && b && d)
{
...
}
我需要找出一种语言是否支持检查if语句中的所有条件,即使“b”失败也是如此。这个概念叫什么?
答案 0 :(得分:14)
不,Java和C ++都不会评估d
。这是short-circuit evaluation。
答案 1 :(得分:3)
不,二进制逻辑运算符是短路的。他们从左到右评估他们的操作数。如果其中一个操作数的计算结果为表达式为false,则不会计算其他操作数。
答案 2 :(得分:3)
标准二进制操作&&和||是short-circuited。如果您想强制双方评估,请使用&或者而不是&&和||。 e.g。
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();
}
}