D sobrecarrega os operadores relacionais binários e permite que eles sejam usados para comparações de seqüências, assim como para comparações de inteiros. Os operadores relacionais fazem a comparação de seqüências sempre que ambos os operandos forem do tipo string, ou quando um operando for do tipo string e o outro operando puder ser promovido para o tipo string, conforme descrito em Atribuição de seqüências. Todos os operadores relacionais podem ser usados para comparar seqüências:
Tabela 6–1 Operadores relacionais de D para seqüências
< |
o operando esquerdo é menor que o operando direito |
<= |
o operando esquerdo é menor ou igual ao operando direito |
> |
o operando esquerdo é maior que o operador direito |
>= |
o operando esquerdo é maior ou igual ao operando direito |
== |
o operando esquerdo é igual ao operando direito |
!= |
o operando esquerdo não é igual ao operando direito |
Como nos inteiros, cada operador é avaliado com um valor de tipo int que é igual a um, se a condição for verdadeira, ou zero se for falsa.
Os operadores relacionais comparam as duas seqüências de entrada byte por byte, semelhante à rotina de biblioteca de C strcmp(3C). Cada byte é comparado através do seu valor de inteiro correspondente no conjunto de caracteres ASCII, conforme mostrado em ascii(5), até que um byte nulo seja lido ou o tamanho máximo de seqüência seja alcançado. Alguns exemplos de comparações de seqüências de D e seus resultados:
"café" < "expresso" |
... retorna 1 (verdadeiro) |
"café" == "café" |
... retorna 1 (verdadeiro) |
"café" >= "mocha" |
... retorna 0 (falso) |