& y | simples son operaciones bit a bit en la mayoría de lenguajes
Un & o un | simple es un operador bit a bit en C, Java y JavaScript, y en Java es además un operador lógico sin cortocircuito. El analizador rechaza los dos y ofrece la palabra o el símbolo doble.
Los dos diagnósticos se registran abajo: un & simple no se admite, usa AND o &&; un | simple no se admite, usa OR o ||. Los símbolos dobles se aceptan porque en toda la familia de C significan AND y OR lógicos de forma coherente; los simples significan algo distinto en cada lenguaje y lo mismo en ninguno.
En C, 5 & 2 es 0 mientras que 5 && 2 es 1, porque el operador bit a bit compara bits y los enteros no comparten ninguno. En JavaScript los operadores simples convierten sus operandos en enteros de 32 bits, así que true & true es el número 1. En Java, entre dos valores boolean, & y | son lógicos pero evalúan los dos lados, lo que importa cuando el lado derecho puede lanzar una excepción. En Python, & y | entre bool dan bool, y entre enteros son bit a bit.
La regla para traducir código es la de las páginas de lenguajes: && y || se corresponden directamente con AND y OR; un & o un | simple requiere mirar los tipos de los operandos antes de poder traducirse. La negativa del analizador es lo que te obliga a mirar.
Lo que dice el analizador
| Escribiste | Código | Por qué se rechaza | Corrección ofrecida |
|---|---|---|---|
| A & B | unsupported-operator | A single `&` is not supported. Use `AND` or `&&`. | Replace with AND Replace with && |
| A | B | unsupported-operator | A single `|` is not supported. Use `OR` or `||`. | Replace with OR Replace with || |
El error habitual
Pegar a & b == c de C. Aunque & se aceptara como AND, C lo agrupa como a & (b == c), porque == liga con más fuerza que &; dos deslices se esconden en seis caracteres.
Preguntas
¿Por qué aceptar && y no &?
&& es el AND lógico en todos los lenguajes que lo tienen. & es bit a bit en C y JavaScript y lógico pero sin cortocircuito en Java; aceptarlo leería bien algunos programas y mal otros, en silencio.
¿|| tiene el mismo estatus?
Sí: || se acepta como OR, | se rechaza con la corrección a OR o ||.
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
- Operadores lógicos en C: lógicos frente a bit a bit
- Operadores lógicos en Java: &&, ||, ! frente a &, | y ^
- Operadores lógicos en JavaScript: &&, ||, !, truthiness y precedencia
- Operadores booleanos en Python: and, or, not, precedencia y errores comunes
- ^ significa XOR en C, Java y Python, no AND ni potencia
- ~ es NOT bit a bit en código y NOT lógico en algunos libros
- Compuerta AND (puerta Y): tabla de verdad de 2, 3 y 4 entradas, símbolo y expresión
- Compuerta OR (puerta O): tabla de verdad de 2, 3 y 4 entradas
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.