ตัวดำเนินการยูนารี (Unary Operator) คือตัวดำเนินการที่ทำงานกับอ็อปแรนด์ (operand) เพียงตัวเดียวเพื่อสร้างค่าใหม่ ตัวดำเนินการยูนารีมีดังนี้:
| ตัวดำเนินการ | คำอธิบาย |
|---|---|
| Indirection operator (*) | ทำงานกับตัวแปร pointer และคืนค่า l-value เทียบเท่ากับค่าที่อยู่ที่ตำแหน่งหน่วยความจำของ pointer เรียกว่า "dereferencing" the pointer |
| Address-of operator (&) | ตัวดำเนินการ address-of แบบยูนารี (&) 取得ที่อยู่ของอ็อปแรนด์ อ็อปแรนด์อาจเป็น function designator หรือ l-value ที่ระบุอ็อบเจกต์ที่ไม่ใช่ bit field และไม่ได้ประกาศด้วย register storage-class specifier |
| Unary plus operator (+) | ผลลัพธ์คือค่าของอ็อปแรนด์ อ็อปแรนด์ต้องเป็น arithmetic type |
| Unary negation operator (-) | ตัวดำเนินการลบ (unary minus) เปลี่ยนเครื่องหมายของอ็อปแรนด์ อ็อปแรนด์อาจเป็น arithmetic type ใดๆ ผลลัพธ์ไม่ใช่ lvalue |
| Logical negation operator (!) | กลับความหมายของอ็อปแรนด์ อ็อปแรนด์ต้องเป็น arithmetic หรือ pointer type แปลงเป็น bool อย่างนัยยะ |
| One's complement operator (~) | ตัวดำเนินการคอมพลีเมนต์ 1 (bitwise NOT) สร้าง bitwise one's complement ของอ็อปแรนด์ อ็อปแรนด์ต้องเป็น integral type |
| Prefix increment operator (++) | บวก 1 ให้กับอ็อปแรนด์ ค่าที่เพิ่มแล้วคือผลลัพธ์ อ็อปแรนด์ต้องเป็น l-value ไม่ใช่ const ผลลัพธ์เป็น l-value ชนิดเดียวกับอ็อปแรนด์ |
| Prefix decrement operator (--) | ลบ 1 จากอ็อปแรนด์ ค่าที่ลดแล้วคือผลลัพธ์ อ็อปแรนด์ต้องเป็น l-value ไม่ใช่ const ผลลัพธ์เป็น l-value ชนิดเดียวกับอ็อปแรนด์ |
| Cast operator () | การแปลงชนิด (type cast) ให้วิธีการแปลงชนิดของอ็อบเจกต์อย่างชัดเจนในสถานการณ์เฉพาะ คอมไพเลอร์จัดการ cast-expression เป็น type type-name |
| sizeof operator | เป็น compile-time unary operator ใช้คำนวณขนาดของอ็อปแรนด์ |
| new operator | ตัวดำเนินการจัดสรรหน่วยความจำ ใช้จัดสรรหน่วยความจำแบบไดนามิก (C++) |
| delete operator | ตัวดำเนินการปล่อยหน่วยความจำ ใช้ปล่อยหน่วยความจำที่จัดสรรแบบไดนามิก (C++) |
ตัวดำเนินการเหล่านี้มี associativity แบบขวาไปซ้าย (right-to-left) นิพจน์ยูนารีโดยทั่วไปเกี่ยวข้องกับไวยากรณ์ที่มาก่อน postfix หรือ primary expression
ตัวอย่างการใช้ -(minus) และ casting():
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
int x;
float y = 1.23;
x = (int) y;
x = -x;
cout << x;
return 0;
}
เอาต์พุต
-1