当方、プログラミングを始めたばかりの初心者です。
タイトルの通り、論理積での条件分岐が上手くいかず、躓いています。
ある変数aが01と02の両方のビットを満たす時、という条件も加えようと思い、以下のように書きました。
if( (a&3==3) && もう一つの条件文 ){ }
変数aと3のビット積をとれば、01と02の両方のビットを満たす7(x0111)や11(x1011)の時に
a&3==3は真となると思うのですが、望んだ結果が出てきません。
ちなみにもう一つの条件文のほうは b!=10 のようなもので、その変数bとaの値が連動して動く様なことはありません。
私はどこを間違ってるのでしょうか?
論理積での条件分岐について
Re: 論理積での条件分岐について
言語が書かれていませんが、C言語では&演算子より==演算子の方が優先順位が高いので、
(a&3==3)は(a&(3==3))すなわち(a&1)と解釈されるようです。
苦C:単語と記号
コンパイラ・コンパイルオプションによっては警告が出ます。
というわけで、
if( ((a&3)==3) && もう一つの条件文 ){ }
のように書くといいかもしれません。
(a&3==3)は(a&(3==3))すなわち(a&1)と解釈されるようです。
苦C:単語と記号
コンパイラ・コンパイルオプションによっては警告が出ます。
というわけで、
if( ((a&3)==3) && もう一つの条件文 ){ }
のように書くといいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)