ฉันมีดังต่อไปนี้
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 ไม่มีการสนับสนุนดังกล่าว