0

这是什么意思"if(<an integer> & 2)"我在这里看到它,但我将它写到 java 并且编译器不接受它。请帮助我!

4

5 回答 5

5

那是因为 Java 不会隐式大小写0false.

在 C++ 中,0is false,所以1 & 2= 0 这是错误的。

虽然在 Java 中,1 & 2仍然是 0,但 0 不能被视为false,因此编译器会告诉您类型不匹配。

于 2013-06-25T20:08:12.163 回答
5

一定是if ((integer & 2) != 0)

Java 无法将正整数识别true为.0falseC++

否则,它测试是否设置了右边的第二位,即它是 1。

于 2013-06-25T20:08:52.557 回答
3

它是一个位运算符,并为您提供第二位。

例如:

# In binary:
1 = 0001    & 2: 0000
2 = 0010    & 2: 0010
3 = 0011    & 2: 0010
4 = 0100    & 2: 0000
5 = 0101    & 2: 0000
6 = 0110    & 2: 0010
于 2013-06-25T20:10:32.220 回答
1

这就是所谓的“按位与”。它接受它的两个参数并返回一个整数值,只有两个参数中为 1 的位设置为 1,其余均为 0。

在 Java 中不起作用的原因是因为 Javaif语句只接受boolean值。

于 2013-06-25T20:10:01.350 回答
1

&符号采用两个给定数字的按位与。
例如,在二进制中取 5 AND 7:
0101 & 0111 = 0101
更多信息在这里

当在 IF 语句中使用时,编译器本质上将检查结果数字是否为 0 并返回 false,或者如果它是任何其他数字,它将返回 true。

于 2013-06-25T20:13:26.143 回答