• ベストアンサー

C#でビット演算はできますか?

C#2008で、以下のソースを動かして、OK 2が表示されるのを期待していたのですが、演算子&をintとbool型の演算子に適用できません。 となります。 何か良い方法はありますか? int a = 32 | 16; int b = 8; int c = 16; if (a & b != 0){ MessageBox.Swho("OK 1"); } if (a & c != 0){ MessageBox.Swho("OK 2"); }

質問者が選んだベストアンサー

  • ベストアンサー
  • tabide
  • ベストアンサー率44% (148/331)
回答No.1

等値演算子 ==, != の方が、論理演算子 &, ^, | より優先順位が高いためです。つまり   a & b != 0 は   a & (b != 0) と解釈されます。 もうお分かりですね?   (a & b) != 0 と、カッコでくるんで下さい。

その他の回答 (1)

回答No.2

if ((a & b) != 0){ MessageBox.Show("OK 1"); } と解釈して欲しいところを if (a & (c != 0)){ MessageBox.Show("OK 2"); } と解釈されちゃってる。

関連するQ&A

専門家に質問してみよう