Trong C++, có nhiều loại toán tử được phân loại rộng rãi thành các nhóm sau: số học, quan hệ, logic, bitwise, gán và các toán tử khác.
1. Toán tử số học (Arithmetic Operators)
Giả sử biến A = 10 và B = 20:
| Toán tử | Mô tả |
|---|---|
| + | Cộng hai toán hạng. A + B = 30 |
| - | Trừ toán hạng thứ hai từ thứ nhất. A - B = -10 |
| * | Nhân hai toán hạng. A * B = 200 |
| / | Chia tử số cho mẫu số. B / A = 2 |
| % | Toán tử chia lấy dư. B % A = 0 |
| ++ | Toán tử tăng, tăng giá trị nguyên lên 1. A++ = 11 |
| -- | Toán tử giảm, giảm giá trị nguyên đi 1. A-- = 9 |
2. Toán tử quan hệ (Relational Operators)
Giả sử A = 10 và B = 20:
| Toán tử | Mô tả |
|---|---|
| == | Kiểm tra hai toán hạng có bằng nhau không. (A == B) là false |
| != | Kiểm tra hai toán hạng có khác nhau không. (A != B) là true |
| > | Kiểm tra vế trái lớn hơn vế phải. (A > B) là false |
| < | Kiểm tra vế trái nhỏ hơn vế phải. (A < B) là true |
| >= | Kiểm tra vế trái lớn hơn hoặc bằng vế phải. (A >= B) là false |
| <= | Kiểm tra vế trái nhỏ hơn hoặc bằng vế phải. (A <= B) là true |
3. Toán tử logic (Logical Operators)
Giả sử A = 1 (true) và B = 0 (false):
| Toán tử | Mô tả |
|---|---|
| && | AND logic. Cả hai khác 0 thì true. (A && B) = false |
| || | OR logic. Ít nhất một khác 0 thì true. (A || B) = true |
| ! | NOT logic. Đảo ngược trạng thái. !(A && B) = true |
4. Toán tử bitwise (Bitwise Operators)
Toán tử bitwise thao tác trên từng bit. Bảng chân lý cho &, |, ^:
p q p&q p|q p^q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1
Giả sử A = 60 (0011 1100) và B = 13 (0000 1101):
A & B = 0000 1100 (12)
A | B = 0011 1101 (61)
A ^ B = 0011 0001 (49)
~A = 1100 0011 (-61 trong dạng bù 2)
| Toán tử | Mô tả |
|---|---|
| & | AND bit. Copy bit nếu tồn tại ở cả hai. (A & B) = 12 |
| | | OR bit. Copy bit nếu tồn tại ở một trong hai. (A | B) = 61 |
| ^ | XOR bit. Copy bit nếu chỉ có ở một vế. (A ^ B) = 49 |
| ~ | Phép đảo bit (Unary). (~A) = -61 |
| << | Dịch trái. A << 2 = 240 (1111 0000) |
| >> | Dịch phải. A >> 2 = 15 (0000 1111) |
5. Toán tử gán (Assignment Operators)
| Toán tử | Mô tả |
|---|---|
| = | Gán đơn giản. C = A + B |
| += | Cộng và gán. C += A ⇔ C = C + A |
| -= | Trừ và gán. C -= A ⇔ C = C - A |
| *= | Nhân và gán. C *= A ⇔ C = C * A |
| /= | Chia và gán. C /= A ⇔ C = C / A |
| %= | Chia lấy dư và gán. C %= A ⇔ C = C % A |
| <<= | Dịch trái và gán. C <<= 2 ⇔ C = C << 2 |
| >>= | Dịch phải và gán. C >>= 2 ⇔ C = C >> 2 |
| &= | Bitwise AND và gán. C &= 2 ⇔ C = C & 2 |
| ^= | Bitwise XOR và gán. C ^= 2 ⇔ C = C ^ 2 |
| |= | Bitwise OR và gán. C |= 2 ⇔ C = C | 2 |
6. Toán tử đặc biệt (Misc Operators)
| STT | Toán tử & Mô tả |
|---|---|
| 1 | sizeof - Trả về kích thước biến. Ví dụ: sizeof(a) với a là int trả về 4 |
| 2 | Toán tử điều kiện (?:) - Nếu điều kiện true trả về X, ngược lại trả về Y |
| 3 | Toán tử phẩy (,) - Thực hiện chuỗi phép toán, giá trị là biểu thức cuối cùng |
| 4 | . (chấm) và -> (mũi tên) - Truy cập thành viên class, struct, union |
| 5 | () - Ép kiểu (Casting). Ví dụ: int(2.2000) trả về 2 |
| 6 | & - Toán tử địa chỉ. &a trả về địa chỉ của biến a |
| 7 | * - Toán tử con trỏ. *var trỏ đến biến var |