sizeof เป็นออพอเรเตอร์ (ไม่ใช่ฟังก์ชัน) ใช้คำนวณขนาดของอาร์กิวเมนต์ หากใส่ฟังก์ชันอื่นเข้าไปเป็นอาร์กิวเมนต์ ฟังก์ชันนั้นจะ ไม่ถูกเรียกใช้งาน เพียงแค่นำชนิดค่าที่คืนมา (return type) ไปคำนวณขนาดเท่านั้น
ตัวอย่าง
#include <stdio.h>
double my_function() {
printf("This is a test function");
return 123456789;
}
int main() {
int x;
x = sizeof(printf("Hello World")); // printf ไม่ทำงาน
printf("The size: %d\n", x);
x = sizeof(my_function()); // my_function ไม่ทำงาน
printf("The size: %d", x);
return 0;
}
ผลลัพธ์
The size: 4 The size: 8
ข้อความ "Hello World" และ "This is a test function" ไม่ได้ถูกพิมพ์ออกมา เพราะ sizeof ไม่ได้ evaluate นิพจน์ภายใน