ควรใช้ตัวกำหนดรูปแบบ "%zu" เพื่อพิมพ์ตัวแปรชนิด size_t แม้จะใช้ "%d" ก็จะไม่เกิด error แต่ "%zu" เป็นวิธีที่ถูกต้องและปลอดภัยที่สุด
ใน "%zu" ตัว z เป็น length modifier และ u หมายถึง unsigned type
ตัวอย่าง
#include <stdio.h>
int main() {
size_t a = 20;
printf("The value of a : %zu", a);
return 0;
}
ผลลัพธ์
The value of a : 20
คำอธิบายเพิ่มเติม
size_tเป็น unsigned integer type ที่ใช้แทนขนาดของออบเจ็กต์ คืนค่าจากsizeof- ขนาดของ
size_tขึ้นกับ architecture: 32-bit = 4 ไบต์, 64-bit = 8 ไบต์ - การใช้
%d(signed int) อาจผิดพลาดบนระบบ 64-bit ที่size_tใหญ่กว่าINT_MAX %zuถูกเพิ่มในมาตรฐาน C99 และ C++11
ตัวกำหนดรูปแบบที่เกี่ยวข้อง
| Format | ใช้สำหรับ |
|---|---|
%zu | size_t |
%zd | ssize_t (signed size) |
%td | ptrdiff_t |
%ju | uintmax_t (alternative) |
เคล็ดลับ: ใช้แมโครจาก <inttypes.h>
#include <stdio.h>
#include <inttypes.h>
int main() {
size_t s = 100;
printf("Size: %" PRIuMAX "\n", (uintmax_t)s); // portable
return 0;
}