2

我有点困惑:

long v = 0;
v <<= 8; 
v |= 230;

我知道 << 是有符号的左移运算符和 | 按位包含 OR 但我对 equals 的作用感到困惑?

所以拳头v是0。所以<<没有任何作用?然后它等于 1000,但那会发生什么?

编辑:我已经编辑了标题,所以其他人可能会更好地找到这个问题:添加了“复合运算符”

4

3 回答 3

4

它们是复合运算符,like+=-=are。他们执行操作,然后将结果分配回v.

基本上:

v <<= 8;

有效

v = v << 8;

同样地

v |= 230;

有效

v = v | 230;

您可以看到与+=和的平行-=

v += 1;

有效地

v = v + 1;
于 2013-07-25T12:55:17.510 回答
4

有几分喜欢+=

例如x+=3表示 x 加 3;存储到 x。

v <<= 8;

将 v 左移 8 位,并存储到 v,功能上等同于v=v << 8.

v |= 230;

与 230 进行按位或运算并存储回 v,相当于v=v | 230.

现在,由于性能限制和优化,此操作可能在低级别就地完成。

于 2013-07-25T12:55:28.060 回答
0

基本上,这是:

v <<= 8; 
v |= 230;

相当于:

v = v << 8; 
v = v | 230;
于 2013-07-25T12:56:50.477 回答