¿Por qué el bitwise y el operador no provocan un cortocircuito?
Todos sabemos que la lógica&&
operador cortocircuitos si el operando izquierdo esfalse
, porque sabemos que si un operando esfalse
, entonces el resultado también esfalse
.
¿Por qué no lo hace bitwise&
operador también cortocircuito? Si el operando izquierdo es0
, entonces sabemos que el resultado también es0
. Cada lenguaje en el que he probado esto (C, Javascript, C #) evalúa ambos operandos en lugar de detenerse después del primero.
¿Hay alguna razón por la cual sería una mala idea dejar que&
operador de cortocircuito? Si no, ¿por qué la mayoría de los idiomas no lo hacen corto? Parece una optimización obvia.