java - precedencia - operador lógico O vs operador bit a bit OR
operadores relacionales en java (2)
Alguien sabe por qué:
if (false && true || true) {
System.out.println("True");
} else {
System.out.println("False");
}
Imprimir " True "
if (false && true | true) {
System.out.println("True");
} else {
System.out.println("False");
}
Imprimir " Falso "
Debido a la precedencia del operador . En su primer ejemplo, el && se hace primero, y luego el || . Pero el OR a nivel de bit tiene mayor prioridad, por lo que en su segundo ejemplo, el | se hace primero, luego el && .
En el primer caso, && tiene mayor prioridad que || operador para que la expresión se evalúe como if ( (false && true) || true ) y obtenga True.
En el segundo caso, el operador OR a nivel de bit tiene una prioridad más alta que &&, por lo que la expresión se evalúa como if ( false && ( true | true ) ) y se obtiene False.