谁能告诉我为什么它打印出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++);
}
谢谢你!
谁能告诉我为什么它打印出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++);
}
谢谢你!
您正在使用 xor : ^
。
true ^ false == true
也可以看看:
我实际上不确定您所说的“独家和”是什么意思。也可以看看:
异或表
0^0 == 0
0^1 == 1
1^0 == 1
1^1 == 0
所以它进入了if语句。
在主块的末尾,System.out.println(i++)
变量i
将具有2
当前写入的值
在 Java 中,^
运算符是按位异或,而不是异与。由于true XOR false
为 TRUE,因此它进入 if 子句。
如果您==
正在!=
处理boolean
.
运算符^
是异或。真值表是
XOR | false true
-------------------
false | false true
true | true false
这就是为什么你得到“1” - 你的if
陈述评估为真。
干杯,
如果说^
,那是排他性的。对于任何命题 p1 和 p2,只有当 p1 或 p2 之一为真时,p1 ^ p2 才为真。
因此,它打印 1 是正常的。