La precedencia cambia entre lenguajes: not a == b en Python
not a == b es not (a == b) en Python, porque la comparación liga con más fuerza que not. En C, a & b == c es a & (b == c). Los mismos caracteres se agrupan de forma distinta de un lenguaje a otro, y el analizador de aquí rechaza la grafía de Python en lugar de elegir una lectura.
El diagnóstico registrado abajo es para not A == B: el analizador se detiene en ==, que no es un operador en este lenguaje, y ofrece <->. Si hubiera aceptado la línea, habría tenido que decidir si not se aplica a A o a toda la comparación, y las dos lecturas son funciones distintas. La respuesta de Python es toda la comparación; la de un libro de lógica es A sola, porque NOT liga con más fuerza; ninguna de las dos es incorrecta en su propio lenguaje.
El orden del motor es NOT, luego AND, luego XOR, luego OR, luego ->, luego <->, y dentro de este lenguaje nunca varía. La variación está en las fronteras: Python coloca not por debajo de las comparaciones; C y Java colocan == por encima de &, así que una prueba bit a bit necesita paréntesis; SQL ordena NOT, AND, OR como aquí pero sitúa IS NULL y BETWEEN entre las comparaciones; las funciones de hoja de cálculo no tienen precedencia alguna, porque el anidamiento es la agrupación.
Traduce poniendo entre paréntesis cada grupo mixto antes de cruzar una frontera entre lenguajes, y contrasta la traducción con la tabla de verdad del motor y no con la salida del otro lenguaje. Las páginas de lenguajes enumeran el orden de cada uno, y la forma totalmente entre paréntesis de cada página muestra lo que el motor leyó.
Lo que dice el analizador
| Escribiste | Código | Por qué se rechaza | Corrección ofrecida |
|---|---|---|---|
| not A == B | unsupported-operator | `==` is not an expression operator. Use `<->` when both sides must have the same value, or the Compare workbench to compare two formulas. | Replace with <-> |
El error habitual
Traducir not a == b de Python como NOT A <-> B, que aquí es (NOT A) <-> B, lo contrario de lo que calcula Python. La traducción fiel es NOT (A <-> B), que es A XOR B.
Preguntas
¿El motor acepta not en minúsculas?
Sí: las palabras de operador no distinguen mayúsculas, así que not a and b se analiza, como (NOT a) AND b. La precedencia es la del motor, no la de Python.
¿Qué lenguaje tiene el mismo orden que el motor?
Para NOT, AND y OR: C, Java, JavaScript, SQL y Python los ordenan todos así. Las diferencias están en cómo encajan entre ellos las comparaciones, los operadores bit a bit y XOR.
Relacionado
Herramientas
- Comprobador de equivalencia lógica: dos expresiones, veredicto exacto, contraejemplo
- Generador de tablas de verdad: cualquier expresión booleana, hasta 12 variables, con columnas intermedias
Véase también
- Precedencia de operadores en lógica booleana: NOT, luego AND, luego XOR, luego OR
- Operadores booleanos en Python: and, or, not, precedencia y errores comunes
- Operadores lógicos en C: lógicos frente a bit a bit
- Operadores lógicos en Java: &&, ||, ! frente a &, | y ^
- Lógica booleana en SQL: AND, OR, NOT y la trampa de NULL (lógica trivaluada)
- El doble igual (==) compara valores; para equivalencia lógica usa ↔
- «A o B y C»: la ambigüedad de agrupación y cómo resolverla
- Lección 3: Agrupación y precedencia
Errores comunes
Generado a partir del motor de Tangibool, semántica tangibool-semantics/1, motor 1.0.0, compilación . Cada tabla, mapa, simplificación y veredicto de estas páginas lo calculó el motor de Tangibool al compilar el sitio, y cada afirmación la volvió a comprobar el mismo verificador exacto que usa la app. Los límites se indican donde aplican. © 2026 Foreranger LTD.