指派操作符的左操作數必須是非 const 的左值。下面的指派語句是不合法的:
如果指派運算符的左右兩個運算對象類型不同,則右側運算對象将轉換成左側運算對象的類型:
指派運算滿足右結合律
指派運算符滿足右結合律:
對于多重指派語句中的每一個對象,它的類型或者與右邊對象的類型相同,或者可由右邊對象的類型轉換得到:
指派運算優先級較低
注意上面代碼中的表達式括号暫時不能省略。
切勿混淆相等運算符和指派運算符
C++語言允許用指派運算作為條件,但是有可能造成嚴重後果:
但是初衷可能是判斷i與j是否相等:
複合指派運算符
複合指派操作符的一般文法格式為:
a op= b;
其中,op= 可以是下列十個操作符之一:
+= -= *= /= %= // arithmetic operators
<<= >>= &= ^= |= // bitwise operators
這兩種文法形式存在一個顯著的差别:使用複合指派操作時,左操作數隻計算了一次;而使用相似的長表達式時,該操作數則計算了兩次,第一次作為右操作數,而第二次則用做左操作數。除非考慮可能的性能價值,在很多(可能是大部分的)上下文環境裡這個差别不是本質性的。
a = a op b;