Comment puis-je printf() un uint16_t?
- Je besoin pour utiliser printf() pour imprimer une uint16_t. Cette SORTE de réponse (Comment imprimer uint32_t et uint16_t variables de la valeur?) dit que j'ai besoin d'utiliser inttypes.h.
Cependant, je suis en train de travailler sur un système embarqué et inttypes.h n'est pas disponible. Comment puis-je imprimer un uint16_t lorsque le spécificateur de format pour un uint16_t n'est pas disponible?
printf("%u\n", (uint16_t)quelque chose);
Comprendre comment une gamme de différents types d'entiers sont sur votre système, et utiliser le spécificateur.
Non,
Comprendre comment une gamme de différents types d'entiers sont sur votre système, et utiliser le spécificateur.
Non,
%u
s'attend à une unsigned int
, pas un uint16_t
. Le casting devrait être de unsigned int
.OriginalL'auteur user9993 | 2015-03-18
Vous devez vous connecter pour publier un commentaire.
Une façon évidente est:
La unsigned int est assuré d'être au moins 16 bits, donc ce n'est pas une perte de conversion.
OriginalL'auteur M.M
Vous devez utiliser le style de inttypes.h, mais de définir les symboles de vous-même.
Par exemple:
La Figure de votre machine et de les utiliser. Jetez un oeil à d'autres dans inttypes.h et la figure dont vous aurez besoin.
De cette façon, votre code sera plus portable. J'ai fait des systèmes embarqués de travail, depuis la fin des années 70. Faites-moi confiance: la portabilité est importante.
OriginalL'auteur Jeff Learman
short int
est le plus petit d'au moins 16 bits afin de convertir la valeur deunsigned short int
et l'imprimer avec%hu
.OriginalL'auteur StenSoft