任何人都可以告诉我为什么打印1? 我肯定知道真假和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++);
}
谢谢你!
答案 0 :(得分:5)
您正在使用xor:^
。
true ^ false == true
另见:
我实际上不确定你的意思是“独家和”。另见:
答案 1 :(得分:2)
xor tables
0^0 == 0
0^1 == 1
1^0 == 1
1^1 == 0
所以它进入了if语句。
在主要版块的末尾,System.out.println(i++)
后i
变量将具有当前编写的值2
答案 2 :(得分:0)
如果您谈论^
,则它是独占的或。对于任何命题p1和p2,只有当p1或p2中的一个为真时,p1 ^ p2才为真。
因此打印1是正常的。
答案 3 :(得分:0)
在Java中,^
运算符是按位异或,而不是独占AND。由于true XOR false
为TRUE,因此它将输入if子句。
如果您正在处理==
,我建议您只使用!=
和boolean
运算符。
答案 4 :(得分:0)
^
运算符为exclusive or。真相表是
XOR | false true
-------------------
false | false true
true | true false
这就是为什么你得到“1” - 你的if
语句评估为真。
干杯,