天天看點

指派操作符

指派操作符的左操作數必須是非 const 的左值。下面的指派語句是不合法的:

如果指派運算符的左右兩個運算對象類型不同,則右側運算對象将轉換成左側運算對象的類型:

指派運算滿足右結合律

指派運算符滿足右結合律:

對于多重指派語句中的每一個對象,它的類型或者與右邊對象的類型相同,或者可由右邊對象的類型轉換得到:

指派運算優先級較低

注意上面代碼中的表達式括号暫時不能省略。

切勿混淆相等運算符和指派運算符

C++語言允許用指派運算作為條件,但是有可能造成嚴重後果:

但是初衷可能是判斷i與j是否相等:

複合指派運算符

複合指派操作符的一般文法格式為:

a op= b;

其中,op= 可以是下列十個操作符之一:

+= -= *= /= %= // arithmetic operators

<<= >>= &= ^= |= // bitwise operators

這兩種文法形式存在一個顯著的差别:使用複合指派操作時,左操作數隻計算了一次;而使用相似的長表達式時,該操作數則計算了兩次,第一次作為右操作數,而第二次則用做左操作數。除非考慮可能的性能價值,在很多(可能是大部分的)上下文環境裡這個差别不是本質性的。

a = a op b;