我有点困惑:
long v = 0;
v <<= 8;
v |= 230;
我知道 << 是有符号左移运算符,| 是位包含或运算符,但我不明白等于号是做什么的?
所以首先v是0。那么 << 没有任何效果吗?然后它等于1000,但之后会发生什么呢?
编辑:我已经编辑了标题,这样其他人可能更好地找到这个问题:添加了“复合运算符”。
我有点困惑:
long v = 0;
v <<= 8;
v |= 230;
它们是复合运算符,就像+=
和-=
一样。它们执行操作,然后将结果赋回给v
。
基本上:
v <<= 8;
已生效
v = v << 8;
v |= 230;
正在生效
v = v | 230;
+=
和 -=
进行比较:v += 1;
可以有效地
v = v + 1;
有一种类似于+=
的语法。
例如x+=3
意味着将3加到x中; 存储到x中。
v <<= 8;
左移8位并将结果存储到v中,与v=v << 8
的功能相同。
v |= 230;
执行位运算 OR 并将其存储回 v,相当于 v=v | 230
。
现在,由于性能限制和优化,此操作可能以低级别的原地方式完成。
v=v | 230
后,v
的值将是多少? - Suresh Attav
值。 - nanofaradv <<= 8;
v |= 230;
等同于这个:
v = v << 8;
v = v | 230;
v = v << 8
然后v = v | 230
。 - Maroun