D proporciona los siguientes operadores lógicos binarios para utilizarlos en sus programas. Los dos primeros operadores son equivalentes a los operadores de ANSI-C correspondientes.
Tabla 2–8 Operadores lógicos de D
&& |
AND lógico: verdadero (true) si ambos operandos son verdaderos (true) |
|| |
OR lógico: verdadero (true) si uno o los dos operandos son verdaderos (true) |
^^ |
XOR lógico: verdadero (true) si exactamente un operando es verdadero (true) |
Normalmente, los operadores lógicos se utilizan con mayor frecuencia para escribir predicados en D. El operador lógico AND realiza una evaluación de cortocircuito: si el operando de la izquierda es falso (false), la expresión de la derecha no se evalúa. El operador lógico OR realiza una evaluación de cortocircuito: si el operando de la izquierda es verdadero (true), la expresión de la derecha no se evalúa. El operador lógico XOR no provoca ningún cortocircuito: ambos operandos se evalúan siempre.
Además de los operadores lógicos binarios, el operador unario ! se puede utilizar para realizar una negación lógica de un único operando: convierte un operando cero en un uno, y un operando distinto a cero en cero. Por convención, los programadores de D utilizan ! cuando trabajan con números enteros que tienen que representar valores booleanos y == 0 cuando trabajan con números enteros no booleanos, aunque ambas expresiones tienen un significado equivalente.
Los operadores lógicos se pueden aplicar a operandos de tipo números enteros o punteros. Los operadores lógicos interpretan los operandos de puntero como valores de números enteros sin signo. Al igual que los operadores lógicos y relacionales en D, los operandos son verdaderos (true) si tienen un valor de número entero distinto a cero y falsos (false) si tienen un valor de numero entero cero.