タグ

ブックマーク / www.deftrash.com (1)

  • perl でビット演算の結果を数値比較する際の注意点 | dTblog

    ハマったのでメモ。 perl で、ビット演算の計算結果と数値を比較する判定文を書いたら、これがうまくいかない。書いたのは、次のようなコード。 if ($var & 1 == 0) { print $var; } $var の値が 1 だろうが 0 だろうが、とにかく結果は 0 となって $var が出力されない。これだけシンプルだと逆に原因が特定できずに困る。 答えは、「Perl の演算子と優先順位」にありました。要するに、比較演算子の方が、ビット演算子より先に評価されたため、常に演算結果が 0 となっていたのでした。これは盲点。 ということで、以下のように修正して解決。 if (($var & 1) == 0) { print $var; } このことは、特段 perl に限った話ではなくて、php でも同様だったし、java にいたってはコンパイルエラーになってしまった。(eclips

  • 1