en C (y otros idiomas probablemente) una sola |
o &
es una comparación bit a bit.
El doble ||
o &&
es una comparación lógica.
Editar: Asegúrese de leer el comentario de Mehrdad a continuación con respecto a "sin cortocircuitos"
En la práctica, ya que true
es a menudo equivalente a 1
y false
es a menudo equivalente a 0
, las comparaciones a nivel de bit a veces puede ser válido y devuelve exactamente el mismo resultado.
Hubo una vez un componente de software de misión crítica en el que ejecuté un analizador de código estático y señaló que se estaba utilizando una comparación bit a bit donde debería haber sido una comparación lógica. Dado que fue escrito en C y debido a la disposición de comparaciones lógicas, el software funcionó bien con cualquiera de los dos. Ejemplo:
if ((altitide > 10000) & (knots > 100))
...
¿qué idioma? –
¿A qué idioma se refiere? –
C# y javascript –