我如何使用&;java中的运算符?移植C代码
我有一个C语言的简单代码我如何使用&;java中的运算符?移植C代码,java,c++,c,bitwise-operators,Java,C++,C,Bitwise Operators,我有一个C语言的简单代码 if (flags & 4) 现在,当我将该行移植到java时: if ((flags & 4) == 1) 它不会触发。将C代码移植到Java的正确方法是什么?我对&operator做了什么错误?应该是!=0而不是==1: if ((flags & 4) != 0) 这是因为在C语言中,在if语句中,任何不为零的内容都被视为true,而Java则强制您使用布尔值。在这种情况下,表达式可以计算为4或0,因此将其与1进行比较总是错误的。如
if (flags & 4)
现在,当我将该行移植到java时:
if ((flags & 4) == 1)
它不会触发。将C代码移植到Java的正确方法是什么?我对&operator做了什么错误?应该是
!=0而不是==1
:
if ((flags & 4) != 0)
这是因为在C语言中,在if
语句中,任何不为零的内容都被视为true
,而Java则强制您使用布尔值。在这种情况下,表达式可以计算为4或0,因此将其与1进行比较总是错误的。如果((标志&4)==4)
当您使用按位and“屏蔽”除一位以外的所有位时,结果不是一位,而是您检查的位。试试看
if ((flags & 4) != 0)
==1
即使在C语言中也不起作用