Estoy un poco confundido por la documentación de MSDN C # que indica que &, | son operadores lógicos y & & y || Son operadores condicionales. Sigo llamando & & amp ;, ||,! Operadores lógicos, ¿entonces me equivoco?
No; tienes razón.
En la documentación de MSDN hay numerosos errores de nomenclatura pequeños, en su mayoría sin importancia; Traté de sacar la mayor cantidad posible de ellos, pero en los casos en los que no es tan incorrecto ni engañoso, no siempre es un uso prudente del tiempo. Vaya a la especificación si desea una declaración definitiva sobre el nombre de una función de C #.
Entonces: la autoridad relevante es la especificación de C #, que se establece en la sección 7.11:
El & amp ;, ^, y | Los operadores se llaman operadores lógicos.
Luego continúa desglosando los operadores lógicos incorporados en operadores lógicos enteros, de enumeración, booleanos y nullable-booleanos. También hay operadores lógicos definidos por el usuario; ver la especificación para más detalles.
En la sección 7.12 tenemos
El & & y || Los operadores se denominan operadores lógicos condicionales. También se les llama operadores lógicos de "cortocircuito".
Todos ellos son operadores lógicos . Algunos de ellos son operadores lógicos condicionales .
¿Qué hace que los operadores lógicos condicionales condicionales ? Uno podría suponer que es porque normalmente se usan en sentencias condicionales ( if
) o expresiones condicionales ( ? :
). La razón real está dada por la especificación:
El & & y || los operadores son versiones condicionales de la & y | operadores: La operación x & & y corresponde a la operación x & y, excepto que y se evalúa solo si x no es falso. La operación x || y corresponde a la operación x | y, excepto que y se evalúa solo si x no es verdadera.
Los operadores lógicos condicionales se denominan así porque el operando de la mano derecha se evalúa condicionalmente según el valor del operando de la izquierda.
Podemos ver esto más vívidamente si notamos que los operadores lógicos condicionales son simplemente "azúcares sintácticos" para expresiones condicionales . x && y
es simplemente una forma más agradable de escribir x ? y : false
, y x || y
es simplemente una forma más agradable de escribir x ? true : y
. Las expresiones lógicas condicionales son en realidad expresiones condicionales.
También hay una forma definida por el usuario del operador lógico condicional, y es un poco complicado. Consulte la especificación para más detalles.
Lectura adicional, si este tema le interesa: