Toán tử gán lưu giá trị vào đối tượng được chỉ định bởi toán hạng trái. Có hai loại phép gán: gán đơn giản (simple assignment), lưu giá trị toán hạng 2 vào đối tượng toán hạng 1; và gán phức hợp (compound assignment), thực hiện phép toán số học, dịch bit, hoặc bitwise trước khi lưu kết quả.
Ví dụ gán đơn giản
#include <iostream>
using namespace std;
int main() {
int i;
i = 10; // Simple Assignment
cout << i;
return 0;
}
Kết quả
10
Các toán tử gán phức hợp dạng e1 op= e2, với e1 là l-value có thể sửa đổi, không const, e2 là kiểu số học hoặc con trỏ (nếu op là + hoặc -). Dạng này hoạt động như e1 = e1 op e2 nhưng e1 chỉ đánh giá một lần.
Các toán tử gán phức hợp trong C++:
| Toán tử | Mô tả |
|---|---|
| *= | Nhân toán hạng 1 với toán hạng 2; lưu kết quả vào đối tượng toán hạng 1. |
| /= | Chia toán hạng 1 cho toán hạng 2; lưu kết quả vào đối tượng toán hạng 1. |
| %= | Lấy modulus toán hạng 1 theo toán hạng 2; lưu kết quả vào đối tượng toán hạng 1. |
| += | Cộng toán hạng 2 vào toán hạng 1; lưu kết quả vào đối tượng toán hạng 1. |
| -= | Trừ toán hạng 2 từ toán hạng 1; lưu kết quả vào đối tượng toán hạng 1. |
| <<= | Dịch trái toán hạng 1 số bit theo toán hạng 2; lưu kết quả vào đối tượng toán hạng 1. |
| >>= | Dịch phải toán hạng 1 số bit theo toán hạng 2; lưu kết quả vào đối tượng toán hạng 1. |
| &= | Lấy bitwise AND 2 toán hạng; lưu kết quả vào đối tượng toán hạng 1. |
| ^= | Lấy bitwise XOR 2 toán hạng; lưu kết quả vào đối tượng toán hạng 1. |
| |= | Lấy bitwise OR 2 toán hạng; lưu kết quả vào đối tượng toán hạng 1. |
Ví dụ
#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;
}
Kết quả
5 3 6 3
Lưu ý: Gán phức hợp cho enum sinh lỗi. Nếu toán hạng trái là con trỏ, phải phải là con trỏ hoặc hằng số 0. Nếu trái là kiểu nguyên, phải không được là con trỏ.