我无法理解为什么这种语法不会产生任何编译时或运行时错误?
int i=2;
switch(i ^ 3){ ---- > this part
case 8: System.out.print("Eight"); break;
default: System.out.print("Default");
}
它打印Default,那么这个(i ^ 3)在切换条件下做了什么?
答案 0 :(得分:1)
i ^ 3
是XOR 3(2 XOR 3),即1(10 XOR 11为1)。它不是幂运算符,因此它不返回8.因此,到达switch语句的默认部分。
答案 1 :(得分:0)
i
等于2
。
2 ^ 3 = 1.(XOR操作)。
10 // 2
11 // 3(XOR)
-
01 // 1
因此,它为切换条件设置值1。
答案 2 :(得分:0)
^是Bitwise XOR,其中i ^ 3
生成整数结果。