2016-09-25 197 views
-5

我瀏覽互聯網,並知道它是一個複合賦值運算符。但它是如何工作的?a >> = b是什麼意思?

我用this鏈接來了解定義,但我找不到這個語法的確切實現。

+2

移向左b乘以。等於整數除以2 ** b。 –

+0

它的'a = a >> b'即移位'a'右'b'次 –

+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的值,並且res ulting輸出。

希望這可以澄清混淆。

+0

將答案都是一樣的'A = 13,>> = 2'和'A = 12,>> = 2' ?? –

+0

是的,最後兩位獲得移出一些,因此你得到相同的答案(即3),你能想到的權通過移動'ñ '倍由2^N做源操作數的整數除法,因此,13/4 = 12/4 = 3。 –

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