¿Por qué Func3 no se ejecuta en el programa a continuación? Después de func1, func2 no necesita ser evaluado sino para func3, ¿no es así?¿Qué hay de malo con la lógica de cortocircuito en este código de Java?
if (func1() || func2() && func3()) {
System.out.println("true");
} else {
System.out.println("false");
}
}
public static boolean func1() {
System.out.println("func1");
return true;
}
public static boolean func2() {
System.out.println("func2");
return false;
}
public static boolean func3() {
System.out.println("func3");
return false;
}
creo que no todo el mundo es consciente del problema de cortocircuito, en ese caso la versión editada de la cuestión para no ser de interés los novatos, incluso si están buscando una respuesta con respecto a la lógica && y || evaluación de Java. – DragonBorn
Esto plantea el hecho de que en cualquier tipo de expresión no trivial como esa, es una buena idea declarar su intención entre paréntesis. Entonces, incluso si pretendía (func1() || (func2() && func3()), lo hace explícito y claro para los programadores que vienen después que su código está funcionando como estaba previsto. – mtruesdell