relacionales precedencia operadores operador combinados java

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.