Toán tử đơn ngôi (Unary operator) là toán tử tác động lên một toán hạng (operand) duy nhất để 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ỉ của toán hạng. Toán hạng có thể là chỉ định hàm hoặc l-value chỉ định đối tượng không phải bit-field và không khai báo với storage-class register. |
| Toán tử cộng đơn ngôi (+) |
Kết quả là giá trị của toán hạng. Toán hạng phải là kiểu số học. |
| Toán tử phủ định đơn ngôi (-) |
Phủ định giá trị toán hạng. Toán hạng có thể là bất kỳ kiểu số học nào. Kết quả không phải l-value. |
| Toán tử phủ định logic (!) |
Đảo ngược ý nghĩa logic của toán hạng. Toán hạng phải là kiểu số học hoặc con trỏ. Toán hạng được chuyển ngầm sang bool. |
| Toán tử bổ sung 1 (~ / One's complement) |
Tạo bổ sung 1 (bitwise NOT) của toán hạng. Toán hạng phải là kiểu nguyên. |
| Toán tử tiền tố tăng (++) |
Tăng toán hạng 1 đơn vị; giá trị sau tăng là kết quả. Toán hạng phải là l-value không phải const. Kết quả là l-value cùng kiểu. |
| Toán tử tiền tố giảm (--) |
Giảm toán hạng 1 đơn vị; giá trị sau giảm là kết quả. Toán hạng phải là l-value không phải const. Kết quả là l-value cùng kiểu. |
| Toán tử ép kiểu () |
Cung cấp phương thức chuyển đổi tường minh kiểu của đối tượng. Trình biên dịch xử lý cast-expression như kiểu type-name sau khi ép. |
| Toán tử sizeof |
Toán tử đơn ngôi thời gian biên dịch, tính kích thước của toán hạng (tính bằng byte). |
| Toán tử new |
Toán tử cấp phát bộ nhớ động (C++). |
| Toán tử delete |
Toán tử giải phóng bộ nhớ đã cấp phát động (C++). |
Các toán tử này có tính kết hợp từ phải sang trái (right-to-left associativity). Biểu thức đơn ngôi thường có cú pháp đặt trước biểu thức hậu tố hoặc biểu thức cơ bản.
Ví dụ
#include <iostream>
using namespace std;
int main() {
int x;
float y = 1.23;
x = (int) y; // Ép kiểu (cast)
x = -x; // Toán tử phủ định đơn ngôi
cout << x;
return 0;
}
Kết quả
-1