如何写(n& 1)?

时间:2016-04-20 07:52:58

标签: java

对于int类型n,您如何重新制作表达式

(n & 1)

if语句中使用时用Java编译?在C和C ++中编译很好。

我尝试的事情:

if (n & 0x1)
if (n & 0x1 == 0x1)
if (n & 0x1 == true)

但是编译器不喜欢这些。

3 个答案:

答案 0 :(得分:5)

请记住您的运营商优先权!

((n & 1) == 1)会这样做。 (&的优先级低于==,因此您需要括号。)

Java不会隐式转换为bool(C ++会这样做),并且关系不会像在C中那样评估为0和1。

答案 1 :(得分:2)

(n & 1)是一个返回0或1的表达式。

如果要将其转换为布尔值(在条件中使用),请使用:

if ((n & 1) == 1) {

}

如果(n & 1) == 1,则会将true评估为(n & 1) == 1

答案 2 :(得分:2)

表达式没有任何问题,除非需要在语句中指定或以其他方式使用,否则您将得到“错误:不是声明”。

表达式的结果是int,因此这适用于:

int x = (n & 1);