我该如何使用& java中的运算符?移植C代码

时间:2012-01-20 01:36:55

标签: java c++ c bitwise-operators

所以我在C中得到了这个简单的代码。

 if (flags & 4)

现在我将这一行移植到java:

 if ((flags & 4) == 1)

它没有触发。什么是将C代码移植到Java的正确方法?我和我做错了什么?操作

3 个答案:

答案 0 :(得分:15)

应该是!= 0而不是== 1

if ((flags & 4) != 0)

这样做的原因是,在C中,true语句中的任何非零都被视为if,而Java会强制您使用布尔值。在这种情况下,表达式可以评估为4或0,因此将其与1进行比较始终为false。

答案 1 :(得分:8)

if ((flags & 4)==4)

当你使用按位并“掩盖”除1之外的所有位时,结果不会是1,它将是你检查的位。

答案 2 :(得分:6)

尝试

if ((flags & 4) != 0)
即使在C

中,

== 1也无效