J'ai ce qui suit
size_t i = 0;
uint32_t k = 0;
printf("i [ %lu ] k [ %u ]\n", i, k);
J'obtiens l'avertissement suivant lors de la compilation:
format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’
Quand j'ai exécuté ceci en utilisant une attelle, j'ai obtenu ce qui suit:
Format argument 1 to printf (%u) expects unsigned int gets size_t: k
Merci beaucoup pour tout conseil,
size_t
est «z», comme dans "%zu"
.
uint32_t
, mais elle manque size_t
. La réponse de @ u0b34a0f6ae comprend les deux.
uint32_t
de<stdint.h>
ou<inttypes.h>
; si vous souhaitez utiliser ces types, vous devez mettre à niveau vers C89. En tant qu'extension, il est probable que GCC vous autorise à les utiliser, mais C89 ne disposait pas d'un tel support.