- ベストアンサー
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"); }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
等値演算子 ==, != の方が、論理演算子 &, ^, | より優先順位が高いためです。つまり a & b != 0 は a & (b != 0) と解釈されます。 もうお分かりですね? (a & b) != 0 と、カッコでくるんで下さい。
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
回答No.2
if ((a & b) != 0){ MessageBox.Show("OK 1"); } と解釈して欲しいところを if (a & (c != 0)){ MessageBox.Show("OK 2"); } と解釈されちゃってる。