所以我在C中得到了这个简单的代码。
if (flags & 4)
现在我将这一行移植到java:
if ((flags & 4) == 1)
它没有触发。什么是将C代码移植到Java的正确方法?我和我做错了什么?操作
答案 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
也无效