Toán tử đơn ngôi (Unary operator) là toán tử tác động lên một toán hạng đơn lẻ tạo ra giá trị mới. Các toán tử đơn ngôi bao gồm:
| Toán tử | Mô tả |
|---|---|
| Toán tử gián tiếp (*) | Tác động trên biến con trỏ, trả về l-value tương đương giá trị tại địa chỉ con trỏ. Gọi là "gián tiếp hóa" (dereferencing) con trỏ. |
| Toán tử lấy địa chỉ (&) | Lấy địa chỉ toán hạng. Toán hạng là chỉ định hàm hoặc l-value chỉ định đối tượng không phải bit-field, không khai báo register storage-class. |
| Toán tử dương đơn ngôi (+) | Kết quả là giá trị toán hạng. Toán hạng phải kiểu số học. |
| Toán tử âm đơn ngôi (-) | Phủ định giá trị toán hạng. Toán hạng bất kỳ kiểu số học. Kết quả không phải lvalue. |
| Toán tử phủ định logic (!) | Đảo ngược ý nghĩa toán hạng. Toán hạng kiểu số học hoặc con trỏ. Chuyển ngầm sang bool. |
| Toán tử bổ sung 1 (~) | Còn gọi bitwise complement/bitwise NOT, tạo phần bù 1 bitwise. Toán hạng phải kiểu nguyên. |
| Toán tử tiền tố tăng (++) | Cộng 1 vào toán hạng; giá trị tăng là kết quả biểu thức. Toán hạng l-value không const. Kết quả l-value cùng kiểu. |
| Toán tử tiền tố giảm (--) | Trừ 1 từ toán hạng; giá trị giảm là kết quả biểu thức. Toán hạng l-value không const. Kết quả l-value cùng kiểu. |
| Toán tử ép kiểu () | Chuyển đổi tường minh kiểu đối tượng trong tình huống cụ thể. Trình biên dịch xử lý cast-expression như type-name sau ép kiểu. |
| Toán tử sizeof | Toán tử đơn ngôi compile-time tính kích thước toán hạng. |
| Toán tử new | Toán tử cấp phát bộ nhớ động. |
| Toán tử delete | Toán tử giải phóng bộ nhớ đã cấp phát động. |
Các toán tử này có tính kết hợp từ phải sang trái. Biểu thức đơn ngôi thường liên quan cú pháp đứng trước postfix hoặc primary expression.
Ví dụ
Ví dụ toán tử âm (-) và ép kiểu ():
#include <iostream>
using namespace std;
int main() {
int x;
float y = 1.23;
x = (int)y;
x = -x;
cout << x;
return 0;
}
Kết quả
-1