Los siguientes operadores de comparación comunes están soportados en GEL, y tienen el significado obvio: ==
, >=
, <=
, !=
, <>
, <
, >
. Éstos devuelven los valores true
o false
. Los operadores !=
y <>
son lo mismo y significan «no es igual a». GEL también permite utilizar el operador <=>
, que devuelve el valor -1 si el lado izquierdo es menor, 0 si ambos lados son iguales, y 1 si el lado izquierdo es mayor.
Generalmente =
se traduce como ==
si aparece en algún lugar dónde GEL espera una condición, como la condición «if». Por ejemplo
if a=b then c if a==b then c
son lo mismo en GEL. Sin embargo, debería utilizar ==
o :=
cuando se quiere comparar o asignar, respectivamente, si quiere que su código sea fácil de leer. Además le ayuda a evitar errores.
No todos los operadores de comparación (salvo el operador <=>
, que se comporta de manera normal), son operadores binarios en el sentido estricto del concepto. De hecho, se pueden agrupar en el modo matemático usual, por ejemplo: (1<x<=y<5
) es una expresión booleana legítima que significa lo que debería, es decir (1<x and x≤y and y<5)
Para construir expresiones lógicas utilice las palabras not
, and
, or
, xor
. Los operadores or
y and
son especiales pues evalúan sus argumentos de uno en uno, por lo que la técnica usual para implementar la evaluación condicional también funciona aquí. Por ejemplo, 1 or a=1
no ejecuta el comando a=1
, pues el primer argumento es verdadero.