>> = b?

时间:2016-09-25 13:54:58

标签: c++ operators

我浏览了互联网并了解到它是一个复合赋值运算符。但它是如何运作的?

我使用this链接来了解定义,但我无法找到此语法的确切实现。

2 个答案:

答案 0 :(得分:0)

在您提供的link中,有一个使用复合赋值运算符的代码段:

a+=2; // equivalent to a=a+2

>>=运算符也以类似的方式工作:

a>>=2; // equivalent to a=a>>2

>>被称为(右)Shift 运算符,并将源操作数的二进制表示向右移动一定的位数。例如,让我们有这段代码:

int a=12;
cout<<a<<endl;
a>>=2;
cout<<a<<endl;

当使用C ++编译器执行时,代码段的输出将是:

12
3

这究竟发生了什么:a的值为12,以二进制表示(仅显示最后6位)001100。a>>=2;移位a中的位右边2个位置并将新值赋给a,因此新的位位置变为000011,十进制为3,因此a得到值3,以及得到的输出。

希望这可以澄清混乱。

答案 1 :(得分:0)

>>是右移操作员。

正如您所提到的,>>=是一个复合赋值运算符。复合赋值使用运算符修改变量,并将新值赋给自身。

a >>= b相当于a = a >> b 即,a右移b次并分配回a。

例如,

int a = 8, b = 2;
a >>= b; // right shift by 2 i.e. divide by 2 x b times.
cout << a; // prints value of 2