0

谁能告诉我为什么它打印出1?我肯定知道 true 和 false AND EXCLUSIVE 给出 0。为什么它进入 if 语句?

 public static void main(String[] args) {
    boolean a=true, b=false; 
    int i=0; 
    if(a^b)   {
        i++;
    } 
    System.out.print(i++);
 }

谢谢你!

4

5 回答 5

5

您正在使用 xor : ^

true ^ false == true

也可以看看:

我实际上不确定您所说的“独家和”是什么意思。也可以看看:

于 2013-06-17T13:29:03.760 回答
2

异或表

0^0 == 0
0^1 == 1
1^0 == 1
1^1 == 0

所以它进入了if语句。

在主块的末尾,System.out.println(i++)变量i将具有2当前写入的值

于 2013-06-17T13:30:03.717 回答
0

在 Java 中,^运算符是按位异或,而不是异与。由于true XOR false为 TRUE,因此它进入 if 子句。

如果您==正在!=处理boolean.

于 2013-06-17T13:30:13.607 回答
0

运算符^。真值表是

 XOR  | false true 
-------------------
false | false true
true  | true  false

这就是为什么你得到“1” - 你的if陈述评估为真。

干杯,

于 2013-06-17T13:30:14.797 回答
0

如果说^,那是排他性。对于任何命题 p1 和 p2,只有当 p1 或 p2 之一为真时,p1 ^ p2 才为真

因此,它打印 1 是正常的。

于 2013-06-17T13:29:23.740 回答