开关(我 ^ 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)。这是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

这是 jQuery 相关的,这是啥意思? [复制]

python中的kwargs保留字。这是啥意思? [复制]

这是啥意思?:在这个示例代码中? [复制]

||= 是啥意思? [复制]

PHP &$string - 这是啥意思? [复制]

如何使用子字符串函数,这是啥意思? [复制]