开关(i ^ 3)。这是什么意思?

时间:2016-03-23 12:43:35

标签: java

我无法理解为什么这种语法不会产生任何编译时或运行时错误?

int i=2;

switch(i ^ 3){       ---- > this part
 case 8: System.out.print("Eight"); break;
 default: System.out.print("Default");
}

它打印Default,那么这个(i ^ 3)在切换条件下做了什么?

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生成整数结果。