我有点困惑:
long v = 0;
v <<= 8;
v |= 230;
我知道 << 是有符号的左移运算符和 | 按位包含 OR 但我对 equals 的作用感到困惑?
所以拳头v是0。所以<<没有任何作用?然后它等于 1000,但那会发生什么?
编辑:我已经编辑了标题,所以其他人可能会更好地找到这个问题:添加了“复合运算符”
我有点困惑:
long v = 0;
v <<= 8;
v |= 230;
我知道 << 是有符号的左移运算符和 | 按位包含 OR 但我对 equals 的作用感到困惑?
所以拳头v是0。所以<<没有任何作用?然后它等于 1000,但那会发生什么?
编辑:我已经编辑了标题,所以其他人可能会更好地找到这个问题:添加了“复合运算符”
它们是复合运算符,like+=
和-=
are。他们执行操作,然后将结果分配回v
.
基本上:
v <<= 8;
有效
v = v << 8;
同样地
v |= 230;
有效
v = v | 230;
您可以看到与+=
和的平行-=
:
v += 1;
有效地
v = v + 1;
有几分喜欢+=
。
例如x+=3
表示 x 加 3;存储到 x。
v <<= 8;
将 v 左移 8 位,并存储到 v,功能上等同于v=v << 8
.
v |= 230;
与 230 进行按位或运算并存储回 v,相当于v=v | 230
.
现在,由于性能限制和优化,此操作可能在低级别就地完成。
基本上,这是:
v <<= 8;
v |= 230;
相当于:
v = v << 8;
v = v | 230;