对于int
类型n
,您如何重新制作表达式
(n & 1)
在if
语句中使用时用Java编译?在C和C ++中编译很好。
我尝试的事情:
if (n & 0x1)
if (n & 0x1 == 0x1)
if (n & 0x1 == true)
但是编译器不喜欢这些。
答案 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);