带布尔操作数的java运算符和排他运算符
有人能告诉我为什么打印出1吗? 我确信,真与假、互斥等于0。为什么它进入if语句带布尔操作数的java运算符和排他运算符,java,Java,有人能告诉我为什么打印出1吗? 我确信,真与假、互斥等于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 另见: 我真的不知道你说的
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
另见:
^
,则它是独占的或。对于任何命题p1和p2,只有当p1或p2中的一个为真时,p1^p2才为真
因此,它打印1.异或表是正常的
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”-如果
语句的计算结果为true,您的
干杯,实际上它是XOR aka或EXCLUSIVE,它给出了true。在这种情况下,它不是按位排他的OR,而是逻辑排他的OR;)但我了解到,只有当我们有1和1(真,真)时,XOR才会给出真,但在这种情况下,我们有1和0(假)。不是吗?那只是“和”。如&
或&
T&&T==T
,T&&F==F
,T^T==F
,T^F==T