Saya memiliki yang berikut ini
size_t i = 0;
uint32_t k = 0;
printf("i [ %lu ] k [ %u ]\n", i, k);
Saya mendapatkan peringatan berikut saat menyusun:
format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’
Ketika saya menjalankan ini menggunakan belat, saya mendapatkan yang berikut:
Format argument 1 to printf (%u) expects unsigned int gets size_t: k
Terima kasih banyak atas sarannya,
size_t
adalah 'z', seperti pada "%zu"
.
uint32_t
, tetapi kurang size_t
. Jawaban @ u0b34a0f6ae mencakup keduanya.
uint32_t
dari<stdint.h>
atau<inttypes.h>
; jika Anda ingin menggunakan tipe tersebut, Anda harus meningkatkan ke C89. Sebagai ekstensi, GCC mungkin mengizinkan Anda untuk menggunakannya, tetapi C89 tidak memiliki dukungan semacam itu.