假设我们有3个变量,我们需要ASSERT它们可以全部等于-1,或者它们都不等于-1。我编写了以下代码:
x := 1;
y := 1;
z := 1;
ASSERT( (x = -1) = (y = -1) = (z = -1) );
我经常写这种针对两个变量的检查,但出乎意料的是三重比较也编译通过了,但它的结果与预期不符。对于(1, 1, 1)这样的值,我希望它能够评估为真。在变量值替换和简化之后,我们得到:
ASSERT( False = False = False );
我认为它应该被评估为True,但实际上并不是。那么这个三元比较是如何被评估的呢?