Tôi có cái sau
size_t i = 0;
uint32_t k = 0;
printf("i [ %lu ] k [ %u ]\n", i, k);
Tôi nhận được cảnh báo sau khi biên dịch:
format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’
Khi tôi chạy điều này bằng cách sử dụng nẹp, tôi nhận được những điều sau:
Format argument 1 to printf (%u) expects unsigned int gets size_t: k
Cảm ơn rât nhiêu vi lơi khuyên,
size_t
là 'z', như trong "%zu"
.
uint32_t
, nhưng nó thiếu size_t
. Câu trả lời của @ u0b34a0f6ae bao gồm cả hai.
uint32_t
từ<stdint.h>
hoặc<inttypes.h>
; nếu bạn muốn sử dụng những loại đó, bạn nên nâng cấp lên C89. Là một phần mở rộng, có khả năng GCC cho phép bạn sử dụng chúng, nhưng C89 không có bất kỳ hỗ trợ nào như vậy.