Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ตัวดำเนินการยูนารี (Unary Operators) ใน C/C++

ตัวดำเนินการยูนารี (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