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

Cya*_*ime 3 c c++ java bitwise-operators

所以我在C中有这个简单的代码.

 if (flags & 4)
Run Code Online (Sandbox Code Playgroud)

现在,当我将行移植到java时:

 if ((flags & 4) == 1)
Run Code Online (Sandbox Code Playgroud)

它不会触发.什么是将C代码移植到Java的正确方法?我和&运营商做错了什么?

das*_*ght 15

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

if ((flags & 4) != 0)
Run Code Online (Sandbox Code Playgroud)

这样做的原因是在C 语句中考虑true了非零的任何内容if,而Java会强制您使用布尔值.在这种情况下,表达式可以计算为4或0,因此将其与1进行比较始终为false.


Rob*_*ahy 8

if ((flags & 4)==4)

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


alf*_*alf 6

尝试

if ((flags & 4) != 0)
Run Code Online (Sandbox Code Playgroud)

== 1 即使在C中也不会起作用