Saltar al contenido

& 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

EscribisteCódigoPor qué se rechazaCorrección ofrecida
A & Bunsupported-operatorA single `&` is not supported. Use `AND` or `&&`.Replace with AND Replace with &&
A | Bunsupported-operatorA 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

Véase también

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.