我浏览了互联网并了解到它是一个复合赋值运算符。但它是如何运作的?
我使用this链接来了解定义,但我无法找到此语法的确切实现。
答案 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