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.