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

วิธีที่ถูกต้องในการใช้ printf พิมพ์ size_t ใน C/C++

ควรใช้ตัวกำหนดรูปแบบ "%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ใช้สำหรับ
%zusize_t
%zdssize_t (signed size)
%tdptrdiff_t
%juuintmax_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;
}