これはもう時代遅れの考え方ではなかろうか…
仕事で使っているプログラムは「必ず真になる条件」として 1 == 1 という式が頻繁に出てきます。これ、なぜかというと if 文などで式が成り立っているかを引き算で判定していることに起因します。たとえば value < 2 という式が成り立っているかを判定する際には、内部的に value – 2 が計算されるのです。もし、結果が0より小さければ条件が成り立っています。逆に結果が0以上の場合は条件は成り立っていません。
では、なぜこの仕組みと 1 == 1 がつながるのかというと、実は x86 の CPU は計算結果が0かどうかの比較が速いのです。だから 1 == 1 つまり 1 – 1 で結果が0になるか?という調べ方をするんですね。
しかしながら、最近の CPU は速いのでこれはもう true に書き換えても良いのではないかと思います。たぶん最適化で消えると思いますし…
Contributions