รูปแบบ
Compound assignment operators มีรูปแบบ e1 op= e2 โดย:
e1ต้องเป็น modifiable l-value ไม่ใช่ conste2ต้องเป็น arithmetic type หรือ pointer (ถ้า op เป็น + หรือ -)
พฤติกรรมเทียบเท่า e1 = e1 op e2 แต่ e1 ถูกประเมินเพียงครั้งเดียว
รายการ Compound Assignment Operators
| Operator | คำอธิบาย |
|---|---|
| *= | คูณ e1 ด้วย e2 เก็บผลใน e1 |
| /= | หาร e1 ด้วย e2 เก็บผลใน e1 |
| %= | modulus e1 ด้วย e2 เก็บผลใน e1 |
| += | บวก e2 เข้า e1 เก็บผลใน e1 |
| -= | ลบ e2 จาก e1 เก็บผลใน e1 |
| <<= | Shift left e1 ด้วย e2 bits เก็บผลใน e1 |
| >>= | Shift right e1 ด้วย e2 bits เก็บผลใน e1 |
| &= | Bitwise AND e1 และ e2 เก็บผลใน e1 |
| ^= | Bitwise XOR e1 และ e2 เก็บผลใน e1 |
| |= | Bitwise OR e1 และ e2 เก็บผลใน e1 |
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
int a = 3, b = 2;
a += b; cout << a << endl; // 5
a -= b; cout << a << endl; // 3
a *= b; cout << a << endl; // 6
a /= b; cout << a << endl; // 3
return 0;
}
ผลลัพธ์
5 3 6 3
ข้อจำกัด
- Compound assignment กับ enumerated type → error
- Left operand เป็น pointer → right ต้องเป็น pointer หรือ constant 0
- Left operand เป็น integral → right ห้ามเป็น pointer