Оценка выражения тройного равенства

Предположим, у нас есть 3 переменных, и нам нужно УТВЕРДИТЬ, что все они могут быть равны -1, либо ни одна из них не может быть равна -1. Я написал следующий код:

x := 1;
y := 1;
z := 1;

ASSERT( (x = -1) = (y = -1) = (z = -1) );

Я часто пишу такую ​​проверку, но для двух переменных. Удивительно, но тройное сравнение тоже скомпилировано, но работает не так, как ожидалось. Для значений (1, 1, 1) я ожидаю, что оно будет оценивать значение true. После подстановки значений переменных и упрощения мы получаем:

ASSERT( False = False = False );

и я подумал, что он должен оцениваться как True, но это не так. Итак, как оценивается это тройное сравнение?

5
задан Max 1 July 2011 в 09:25
поделиться