ฉันมีดังต่อไปนี้
size_t i = 0;
uint32_t k = 0;
printf("i [ %lu ] k [ %u ]\n", i, k);
ฉันได้รับคำเตือนต่อไปนี้เมื่อคอมไพล์:
format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’
เมื่อฉันวิ่งโดยใช้เฝือกฉันได้รับสิ่งต่อไปนี้:
Format argument 1 to printf (%u) expects unsigned int gets size_t: k
ขอบคุณมากสำหรับคำแนะนำใด ๆ
size_t
คือ 'z' เช่นเดียวกับใน"%zu"
.
uint32_t
size_t
คำตอบของ @ u0b34a0f6ae มีทั้งสองอย่าง
uint32_t
จาก<stdint.h>
หรือ<inttypes.h>
; หากคุณต้องการใช้ประเภทเหล่านั้นคุณควรอัปเกรดเป็น C89 ในฐานะที่เป็นส่วนเสริมมีแนวโน้มว่า GCC จะอนุญาตให้คุณใช้งานได้ แต่ C89 ไม่มีการสนับสนุนดังกล่าว