Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何使用&;java中的运算符?移植C代码_Java_C++_C_Bitwise Operators - Fatal编程技术网

我如何使用&;java中的运算符?移植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进行比较总是错误的。如

我有一个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进行比较总是错误的。

如果((标志&4)==4)

当您使用按位and“屏蔽”除一位以外的所有位时,结果不是一位,而是您检查的位。

试试看

if ((flags & 4) != 0)
==1
即使在C语言中也不起作用