开关(我 ^ 3)。这是啥意思? [复制]
Posted
技术标签:
【中文标题】开关(我 ^ 3)。这是啥意思? [复制]【英文标题】:switch( i ^ 3). what does this mean? [duplicate]开关(我 ^ 3)。这是什么意思? [复制] 【发布时间】:2016-07-10 18:23:53 【问题描述】:我不明白为什么这种语法不会产生任何类型的编译时或运行时错误?
int i=2;
switch(i ^ 3) ---- > this part
case 8: System.out.print("Eight"); break;
default: System.out.print("Default");
它打印默认值,那么这个(i ^ 3)在切换条件下做了什么?
【问题讨论】:
这是一个按位异或 最糟糕的写作方式if(i == 11) ... else ...
!
【参考方案1】:
^ 是按位异或,i ^ 3
生成整数结果。
【讨论】:
【参考方案2】:i ^ 3
是 i XOR 3 (2 XOR 3),即 1 (10 XOR 11 是 1)。它不是幂运算符,所以它不返回 8。因此到达 switch 语句的默认部分。
【讨论】:
【参考方案3】:i
等于 2
。
2^3 = 1。(异或运算)。
10 //2 11 // 3 (XOR) -- 01 //1
因此,它为开关条件设置了值 1。
【讨论】:
以上是关于开关(我 ^ 3)。这是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章