Estoy un poco confundido por la documentación de MSDN # C que establece que &
y |
son operadores lógicos y que &&
y ||
son los operadores condicionales.
Sigo llamando &&
, ||
y !
operadores lógicos, ¿entonces estoy equivocado?
c#
operators
logical-operator
Juan v
fuente
fuente
|
es intercambiable||
, aunque en muchos casos pueden intercambiarse sin un cambio aparente en el comportamiento del programa.Respuestas:
No; Estás en lo correcto.
Existen numerosos errores de nomenclatura pequeños, en su mayoría sin importancia, en la documentación de MSDN; Traté de sacar la mayor cantidad posible de ellos, pero en los casos en que no es tan erróneo y engañoso, no siempre es un uso racional del tiempo. Vaya a la especificación si desea una declaración definitiva sobre el nombre de una característica de C #.
Entonces: la autoridad relevante es la especificación C #, que establece en la sección 7.11:
Luego continúa desglosando los operadores lógicos integrados en operadores lógicos enteros, de enumeración, booleanos y booleanos anulables. También hay operadores lógicos definidos por el usuario; Vea las especificaciones para más detalles.
En la sección 7.12 tenemos
Entonces todos ellos son operadores lógicos . Algunos de ellos son operadores lógicos condicionales .
¿Qué hace que los operadores lógicos condicionales sean condicionales ? Uno podría hacer una suposición engañosa de que se debe a que generalmente se usan en declaraciones condicionales (
if
) o expresiones condicionales (? :
). La verdadera razón viene dada por la especificación:Los operadores lógicos condicionales se denominan así porque el operando de la mano derecha se evalúa condicionalmente dependiendo del valor del operando de la mano izquierda.
Podemos ver esto más vívidamente al notar 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 escribirx ? y : false
, yx || y
es simplemente una forma más agradable de escribirx ? 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:
fuente
En C # estos son todos operadores lógicos.
&&
y||
se denominan " operadores lógicos condicionales " porque están en cortocircuito.Tenga en cuenta que esta terminología difiere de un idioma a otro. En C y C ++
&&
y||
son solo operadores lógicos. En Java,&
y|
se llaman Operadores Bitwise , mientras que C y C ++ los clasifica como Operadores Aritméticos .fuente
El punto es que
&
y|
están a nivel de bits los operadores, lo que significa que se aplican a y valores de cadena de bits de rendimiento. Y bitwise es un término muy utilizado entre los programadores.Por ejemplo
0xff & 0x00 == 0x00
, mientras0xff | 0x00 == 0xff
.Y
&&
y||
se aplican a las condiciones, y producen los valores habituales de las condiciones; es decirtrue
yfalse
.Por ejemplo
true && false == false
, mientrastrue || false == true
.Por lo tanto
&&
, y||
podría llamarse condicionales operadores, a pesar de que no es un término habitual entre los programadores.Por supuesto, todos los programadores de C, C ++, Java y C # saben todo eso. Pero supongo que el malentendido sucede porque "operador condicional" no es un término que los programadores usamos con frecuencia.
fuente