Me gustaría saber si la precedencia del operador en los lenguajes de programación depende de la implementación o si hay una regla fija que todos los idiomas sigan. Y si es posible, podría ordenar primero los siguientes operadores con mayor prioridad: AND, OR, NOT, XOR.Operadores booleanos precedencia
Respuesta
Busqué en Google y descubrí this que dice que algunos lenguajes como APL y SmallTalk no tienen reglas de precedencia del operador y evalúan estrictamente las expresiones de izquierda a derecha/izquierda a derecha.
Sin embargo, el orden relativo de precedencia seguido es NO> XOR> Y> o en la mayoría de los idiomas especialmente los derivados de C
De acuerdo con [este] (http://en.cppreference.com/w/c/language/operator_precedence), la precedencia de C no es> Y> XOR> O, con AND antes de XOR. JavaScript y Java también siguen este orden. – mbomb007
Boolean o bit a bit? No hay una regla fija, la mayoría de los idiomas tienen reglas similares pero difieren en los detalles. Búscalo en la definición de idioma.
De acuerdo. Tenía operadores booleanos en mente al publicar. Gracias por recordarme de los operadores bit a bit. – Mika
Hay tres operadores booleanos básicos: NOT, AND, OR. XOR es simplemente una versión simple de A AND NOT B OR NOT A AND B
o (A OR NOT B) AND (NOT A OR B)
. Entonces, solo estos tres tienen precedencia común: NOT> AND> OR. XOR tiene una posición diferente en los idiomas, pero seguramente no tiene una precedencia mayor que AND y no menor que OR. La mayoría de los idiomas (por ejemplo, C/C++/Javascript, etc.) lo tienen entre AND y OR, pero en otros (por ejemplo, Perl) XOR tiene la misma precedencia que OR.
(O puede expresarse utilizando sólo AND y NOT, pero sigue siendo un operador básica: A OR B = NOT(NOT A AND NOT B)
)
¿Hay alguna buena razón para tener una precedencia diferente? Creo que (en un mundo ideal) los operadores booleanos deberían tener el mismo nivel de precedencia y operaciones lógicas que siempre se realizarían de izquierda a derecha. ¿Hay una buena razón para estar de otra manera? 'true xor false o true' se debe evaluar como verdadero (' (true xor false) o true'), no como false ('true xor (false o true)') – Junior
Sí. La razón es muy similar a los operadores aritméticos. Este es un "álgebra diferente" (álgebra booleana). Y es un tipo de multiplicación, y O es como una suma. Hay áreas donde es más importante que el álgebra estándar (por ejemplo, construcción de circuitos digitales). – FERcsI
- 1. Lambda Operadores de cálculo precedencia
- 2. precedencia de operadores lógicos en C
- 3. La precedencia de operadores en C#
- 4. Lista Precedencia de operadores en Perl
- 5. precedencia de operadores ++ y - en Java
- 6. ¿Cómo uso operadores booleanos con Hibernate Search
- 7. operadores booleanos en una instrucción switch?
- 8. ¿Alguien está usando los operadores booleanos nombrados?
- 9. Diferencias en operadores booleanos: & vs && y | vs ||
- 10. comportamiento de bool con operadores no booleanos
- 11. Operadores booleanos simples para indicadores de bit
- 12. Python - comportamiento curioso/inesperado - precedencia de los operadores
- 13. Precedencia de operadores en C - Devolver un valor
- 14. ¿Se pueden usar operadores booleanos con el preprocesador?
- 15. Comportamientos extraños de Solr/Lucene con operadores booleanos
- 16. ANTLR Precedencia del operador
- 17. Qué operador lógico toma precedencia
- 18. Cambiar la precedencia del operador en Python
- 19. GetHashCode() desde booleanos única
- 20. CSS precedencia
- 21. ¿Cómo decide Ocaml la precedencia para los operadores definidos por el usuario?
- 22. Diferencia entre "&&" y "y": La precedencia de operadores y los cortocircuitos
- 23. Haskell operador vs función precedencia
- 24. ¿Cuál es el uso de operadores booleanos sin cortocircuito en Erlang?
- 25. ¿Hay funciones integradas para operadores booleanos con elementos sobre listas booleanas?
- 26. ¿Hay buenos usos para los operadores lógicos (booleanos) sin cortocircuito en Java/Scala?
- 27. Prolog precedencia y reglas de concordancia
- 28. ¿Mysql o/y precedencia?
- 29. CSS precedencia gobierna
- 30. XSL plantilla de precedencia
nunca puedo recordar la precedencia de XOR, pero todos los idiomas que he usado tiene la misma prioridad para la otros tres. – Neil