3つの変数があり、それらがすべて-1に等しいかどちらも-1に等しくないことをASSERTする必要があるとします。私は次のコードを書いた:トリプル等価式評価
x := 1;
y := 1;
z := 1;
ASSERT((x = -1) = (y = -1) = (z = -1));
私はしばしばこの種のチェックを書いているが、2つの変数について書いている。驚いたことに、トリプル比較もコンパイルされましたが、期待どおりに動作しません。 (1,1,1)の値については、それが真であると評価すると期待します。変数値および簡素化の置換した後、我々が得る:
ASSERT(False = False = False);
を、私はそれがTrueに評価すべきと思ったが、それはしません。だからこの三重比較はどのように評価されますか?
どちらもありませんか?どのように3つの条件で可能ですか? –
+1の奇妙な表現!ブール値以外の値があれば、 '互換性のない型'コンパイラエラーが発生します。 BOOLEANの値が '= '演算子と比較されることはほとんどないので、私はこれがコーナーケースであると思います。 –
何も変わっていない、False = FalseはTrue、Trueは> True False –