这个'>> ='是什么意思?

时间:2014-08-27 14:07:49

标签: c operator-keyword

在阅读'C'代码时,我遇到了这行代码

b>>=1;

任何人都可以澄清这是什么意思吗?

5 个答案:

答案 0 :(得分:4)

此表达式基于运算符>> =称为复合赋值运算符

b>>=1;

相当于

b = b >> 1;

b>> 1向右移动存储在b中的值,前提是运算符不是iser定义的运算符。 例如,如果b具有以下内部表示(假设b具有类型unsigned char)

00001111

然后b>> 1结果

00000111

b应具有整数类型。如果b为负数,则结果为实现定义。 正如我已经提到的,您可以为用户定义的类型重载此运算符。

实际上,表达式b >> 1等同于b / 2正如您可以看到上面的示例,原始值00001111在十进制表示法中等于15,而结果值{{1}在十进制表示法中等于7。您可以使用表达式00000111

获得相同的结果

因此

b / 2

也可以写成

b >>= 1;

答案 1 :(得分:2)

向右移位b一位,然后将结果分配回b

答案 2 :(得分:2)

>>=复合作业运算符。

对于复合赋值运算符,

E1 op= E2

相当于

E1 = E1 op (E2)

所以b >>= 1相当于b = b >> 1

答案 3 :(得分:0)

b>>=1Compound assignment Operator

它扩展为 -

b = b >> 1;

这意味着您正确地将b移位一次,并将结果存储在b中。

右移只是除以2. b = b >> 1等于b = b/2

答案 4 :(得分:0)

这是右移位运算符,意思是b = b >> 1;