Supongamos que tenemos 3 variables y tenemos que AFIRMAR que todas pueden ser iguales a -1 o ninguna puede ser igual a -1. Escribí el siguiente código:Evaluación de la expresión de la igualdad triple
x := 1;
y := 1;
z := 1;
ASSERT((x = -1) = (y = -1) = (z = -1));
A menudo escribo este tipo de verificación, pero para dos variables. Sorprendentemente, la comparación triple compilada también, pero no funciona como se esperaba. Para los valores (1, 1, 1), espero que se evalúe como verdadero. Después de la sustitución de los valores de las variables y la simplificación obtenemos:
ASSERT(False = False = False);
y pensé que debería evaluarse como True, pero no es así. Entonces, ¿cómo se evalúa esta comparación triple?
¿Ninguno? ¿Cómo es posible con 3 condiciones? –
+1 por la rareza de la expresión! Si tuviera cualquier otro valor booleano, obtendría un error de compilador de 'Tipos incompatibles'; Y supongo que este es un caso de esquina ya que los valores de BOOLEAN rara vez se comparan con el operador '='. –
Nada es extraño, Falso = Falso es igual a Verdadero, y Verdadero <> Falso –