Los operadores relacionales pueden verse como casos especiales de predicados lógicos.
Sin embargo, dicha tolerancia puede romper fácilmente propiedades deseadas como la transitividad, mientras que la reflexividad también se rompe: el estándar de coma flotante IEEE requiere que "NaN ≠ NaN" se cumpla.
En JavaScript, PHP, VBScript y algunos otros lenguajes escritos dinámicamente, el operador de igualdad estándar se evalúa como "verdadero" si dos valores son iguales, incluso si tienen tipos diferentes, lo que hace que el número 4 se compare con la cadena de texto "4", por ejemplo.
Por ejemplo, la función C cadenas de texto en C realiza una comparación a tres sentidos y devuelve −1, 0 o 1 según esta convención, y qsort espera que la función de comparación devuelva valores según esta convención.
Aunque quizás no sea obvio al principio, como los operadores lógicos boleanos XOR, AND, OR y NOT, los operadores relacionales pueden diseñarse para tener equivalencia lógica, de modo que todos puedan definirse en términos de otros.
Las siguientes cuatro declaraciones condicionales tienen la misma equivalencia lógica E (todas verdaderas o todas falsas) para cualquier valor dado de x e y: Esto depende de que el dominio esté bien ordenado.
A continuación se muestran los operadores relacionales numéricos más comunes utilizados en los lenguajes de programación.
La sintaxis es clara, ya que estos operadores relacionales en matemáticas son transitivos.
Otros, como C# y Java, no lo hacen, en parte porque diferiría de la forma en que funcionan la mayoría de los otros operadores infijos en los lenguajes tipo C. El D no hace eso, ya que mantiene cierta compatibilidad con C, y "Permitir expresiones en C pero con una semántica sutilmente diferente (aunque posiblemente en la dirección correcta) agregaría más confusión que conveniencia".
[5] Algunos lenguajes, como Common Lisp, utilizan predicados de múltiples argumentos para esto.
Los primeros FORTRAN (1956–57) estaban limitados por conjuntos de caracteres muy restringidos, en los que = era el único operador relacional disponible.
[8] Como las actualizaciones de variables no tenían una sintaxis especial en B (como let o similar) y estaban permitidas en las expresiones, este significado no estándar del signo igual significó que la semántica tradicional del signo igual ahora tenía que asociarse con otro símbolo.
A medida que más tarde se introdujo un pequeño sistema de tipos, B se convirtió en C. La popularidad de este lenguaje junto con su asociación con Unix, llevó a que Java, C# y muchos otros lenguajes siguieran sintácticamente su ejemplo, a pesar de este conflicto innecesario con el significado matemático del signo igual.
El compilador generará un mensaje de error, en el que se podrá sustituir el operador adecuado.
Este estilo de codificación se denomina comparación a la izquierda o condiciones Yoda.