私は 2 つの整数の個々のビットを操作しています (Ubuntu マシンでのコンパイルに g++ を使用しています)。
いくつかの中間ステップでは、ビット表現を次のようにしています
q = 11000000000000000000000000000000
q_1 = 00000000000000000000000000000001
ここで、ユニットの q と q_1 の位置が同じかどうかを確認したいと思います。(*q)&1==q_1そのため、 if条件をチェックしていますが、正常に機能しています。
しかし、ユニットの q の位が 0 で q_1 の位が 1 であることを確認したいときはいつでも、そうすべきだと思ったのです((*q)&1==0) && (q_1==1)が、期待どおりに動作しません。デバッグのために、 と の値を個別に編集したところ、 として出力されましcoutた。ただし、値が0 として出力されました。なぜですか?((*q)&1==0)(q_1==1)1((*q)&1==0) && (q_1==1)
* EDIT : *関数では、q は参照によって渡されたため、*q を使用して値を取得しています。