D sobrecarga los operadores relacionales binarios y permite utilizarlos para las comparaciones de cadenas, así como para comparaciones de números enteros. Los operadores relacionales realizan la comparación de cadenas siempre que ambos operandos sean del tipo string, o cuando un operando es del tipo string y el otro operando se pueda promocionar al tipo string, como se describe en Asignación de cadenas. Todos los operadores relacionales se pueden utilizar para comparar cadenas:
Tabla 6–1 Operadores relacionales de D para cadenas
< |
el operando de la izquierda es menor que el de la derecha |
<= |
el operando de la izquierda es menor o igual que el de la derecha |
> |
el operando de la izquierda es mayor que el de la derecha |
>= |
el operando de la izquierda es mayor o igual que el de la derecha |
== |
el operando de la izquierda es igual que el de la derecha |
!= |
el operando de la izquierda es distinto que el de la derecha |
Al igual que con los números enteros, cada operador evalúa el valor del tipo int,que es igual a uno si la condición es true, o cero si es false.
Los operadores relacionales comparan las dos cadenas de entrada byte a byte, igual que la rutina de la biblioteca C strcmp(3C). Cada byte se compara utilizando su valor de entero correspondiente en el conjunto de caracteres ASCII, como se muestra en ascii(5), hasta que se lea un byte nulo o se alcance la longitud máxima de la cadena. Algunos ejemplos de comparaciones de cadenas D y sus resultados son:
"coffee" < "espresso" |
... devuelve 1 (true) |
"coffee" == "coffee" |
... devuelve 1 (true) |
"coffee" >= "mocha" |
... devuelve 0 (false) |