2012-04-08 11 views
9

の内側を使用して、私はif文Cではビット単位&if文

if (firstInt & 1) 

を書くことができますが、私はJavaで同じことをしようとして行うときに、コンパイラは、「互換性のない型」私に語ったと私は言いますintの代わりにbooleanが必要です。そのCコードをJavaで記述する方法はありますか?

+3

これがC/C++で動作する理由は、言語が暗黙的に結果をゼロと比較することで条件内の式を解釈することです。 Javaはこの点で非常に厳しく、条件文でブール式を必要とします。 – dasblinkenlight

+0

これは暗黙的なことではありません。 Cはboolean型でもありません。 – Taymon

+0

@Taymon Cはboolean型 '_Bool'を持ち、' ​​stool'のマクロ 'bool'を' _Bool'に展開します – ouah

答えて

22

、次のいずれかのあなたのために働く必要があります。整数式は、ゼロが偽のブール式(私はそれが悪い考えであることを主張するだろうが)、として暗黙的に使用することができますCで

if ((firstInt & 1) != 0) 
if ((firstInt & 1) > 0) 
if ((firstInt & 1) == 1) 
+0

+1。 '(firstInt&1)== 1'も行うことができます。 –

+3

訂正のために括弧(私が追加したもの)が必要であることに注意してください。 Javaでは、比較演算子はバイナリのビット演算子よりも緊密にバインドされています。 – Taymon

+0

ありがとうございました。私はそれができるようになるとすぐにあなたの答えを受け入れるでしょう。 – user1310650

1

ゼロ以外の値がtrueの場合

Javaでは許可されていないので、整数演算子を比較演算子を使用して他の整数値または式と比較することで、式を明示的に真偽にする必要があります。