#include <inttypes.h> // <cinttypes> en C++
Les macros PRI* produisent des fragments de chaînes utilisables avec les fonctions de la famille
printf. Elles permettent d'afficher correctement les types fournis par <stdint.h>,
sans supposer qu'un int64_t est forcément un long ou un long long.
Pour les types de largeur exacte, les macros correspondantes ne sont disponibles que si le type lui-même existe.
Les macros en base binaire ont été ajoutées par C23 ; les versions PRIB* sont optionnelles.
| Macro | Type visé | Conversion |
|---|---|---|
PRId8 |
int8_t |
entier signé en base 10. |
PRId16 |
int16_t |
entier signé en base 10. |
PRId32 |
int32_t |
entier signé en base 10. |
PRId64 |
int64_t |
entier signé en base 10. |
PRIdLEAST8 |
int_least8_t |
entier signé en base 10. |
PRIdLEAST16 |
int_least16_t |
entier signé en base 10. |
PRIdLEAST32 |
int_least32_t |
entier signé en base 10. |
PRIdLEAST64 |
int_least64_t |
entier signé en base 10. |
PRIdFAST8 |
int_fast8_t |
entier signé en base 10. |
PRIdFAST16 |
int_fast16_t |
entier signé en base 10. |
PRIdFAST32 |
int_fast32_t |
entier signé en base 10. |
PRIdFAST64 |
int_fast64_t |
entier signé en base 10. |
PRIdMAX |
intmax_t |
entier signé en base 10. |
PRIdPTR |
intptr_t |
entier signé en base 10. |
PRIi8 |
int8_t |
entier signé en base 10. |
PRIi16 |
int16_t |
entier signé en base 10. |
PRIi32 |
int32_t |
entier signé en base 10. |
PRIi64 |
int64_t |
entier signé en base 10. |
PRIiLEAST8 |
int_least8_t |
entier signé en base 10. |
PRIiLEAST16 |
int_least16_t |
entier signé en base 10. |
PRIiLEAST32 |
int_least32_t |
entier signé en base 10. |
PRIiLEAST64 |
int_least64_t |
entier signé en base 10. |
PRIiFAST8 |
int_fast8_t |
entier signé en base 10. |
PRIiFAST16 |
int_fast16_t |
entier signé en base 10. |
PRIiFAST32 |
int_fast32_t |
entier signé en base 10. |
PRIiFAST64 |
int_fast64_t |
entier signé en base 10. |
PRIiMAX |
intmax_t |
entier signé en base 10. |
PRIiPTR |
intptr_t |
entier signé en base 10. |
PRIb8 (C23) |
uint8_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIb16 (C23) |
uint16_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIb32 (C23) |
uint32_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIb64 (C23) |
uint64_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIbLEAST8 (C23) |
uint_least8_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIbLEAST16 (C23) |
uint_least16_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIbLEAST32 (C23) |
uint_least32_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIbLEAST64 (C23) |
uint_least64_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIbFAST8 (C23) |
uint_fast8_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIbFAST16 (C23) |
uint_fast16_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIbFAST32 (C23) |
uint_fast32_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIbFAST64 (C23) |
uint_fast64_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIbMAX (C23) |
uintmax_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIbPTR (C23) |
uintptr_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIB8 (C23) |
uint8_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIB16 (C23) |
uint16_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIB32 (C23) |
uint32_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIB64 (C23) |
uint64_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIBLEAST8 (C23) |
uint_least8_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIBLEAST16 (C23) |
uint_least16_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIBLEAST32 (C23) |
uint_least32_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIBLEAST64 (C23) |
uint_least64_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIBFAST8 (C23) |
uint_fast8_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIBFAST16 (C23) |
uint_fast16_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIBFAST32 (C23) |
uint_fast32_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIBFAST64 (C23) |
uint_fast64_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIBMAX (C23) |
uintmax_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIBPTR (C23) |
uintptr_t |
entier non signé en base 2. Cette macro est optionnelle et n'est fournie que si le spécificateur B est supporté. |
PRIo8 |
uint8_t |
entier non signé en base 8. |
PRIo16 |
uint16_t |
entier non signé en base 8. |
PRIo32 |
uint32_t |
entier non signé en base 8. |
PRIo64 |
uint64_t |
entier non signé en base 8. |
PRIoLEAST8 |
uint_least8_t |
entier non signé en base 8. |
PRIoLEAST16 |
uint_least16_t |
entier non signé en base 8. |
PRIoLEAST32 |
uint_least32_t |
entier non signé en base 8. |
PRIoLEAST64 |
uint_least64_t |
entier non signé en base 8. |
PRIoFAST8 |
uint_fast8_t |
entier non signé en base 8. |
PRIoFAST16 |
uint_fast16_t |
entier non signé en base 8. |
PRIoFAST32 |
uint_fast32_t |
entier non signé en base 8. |
PRIoFAST64 |
uint_fast64_t |
entier non signé en base 8. |
PRIoMAX |
uintmax_t |
entier non signé en base 8. |
PRIoPTR |
uintptr_t |
entier non signé en base 8. |
PRIu8 |
uint8_t |
entier non signé en base 10. |
PRIu16 |
uint16_t |
entier non signé en base 10. |
PRIu32 |
uint32_t |
entier non signé en base 10. |
PRIu64 |
uint64_t |
entier non signé en base 10. |
PRIuLEAST8 |
uint_least8_t |
entier non signé en base 10. |
PRIuLEAST16 |
uint_least16_t |
entier non signé en base 10. |
PRIuLEAST32 |
uint_least32_t |
entier non signé en base 10. |
PRIuLEAST64 |
uint_least64_t |
entier non signé en base 10. |
PRIuFAST8 |
uint_fast8_t |
entier non signé en base 10. |
PRIuFAST16 |
uint_fast16_t |
entier non signé en base 10. |
PRIuFAST32 |
uint_fast32_t |
entier non signé en base 10. |
PRIuFAST64 |
uint_fast64_t |
entier non signé en base 10. |
PRIuMAX |
uintmax_t |
entier non signé en base 10. |
PRIuPTR |
uintptr_t |
entier non signé en base 10. |
PRIx8 |
uint8_t |
entier non signé en base 16, lettres minuscules. |
PRIx16 |
uint16_t |
entier non signé en base 16, lettres minuscules. |
PRIx32 |
uint32_t |
entier non signé en base 16, lettres minuscules. |
PRIx64 |
uint64_t |
entier non signé en base 16, lettres minuscules. |
PRIxLEAST8 |
uint_least8_t |
entier non signé en base 16, lettres minuscules. |
PRIxLEAST16 |
uint_least16_t |
entier non signé en base 16, lettres minuscules. |
PRIxLEAST32 |
uint_least32_t |
entier non signé en base 16, lettres minuscules. |
PRIxLEAST64 |
uint_least64_t |
entier non signé en base 16, lettres minuscules. |
PRIxFAST8 |
uint_fast8_t |
entier non signé en base 16, lettres minuscules. |
PRIxFAST16 |
uint_fast16_t |
entier non signé en base 16, lettres minuscules. |
PRIxFAST32 |
uint_fast32_t |
entier non signé en base 16, lettres minuscules. |
PRIxFAST64 |
uint_fast64_t |
entier non signé en base 16, lettres minuscules. |
PRIxMAX |
uintmax_t |
entier non signé en base 16, lettres minuscules. |
PRIxPTR |
uintptr_t |
entier non signé en base 16, lettres minuscules. |
PRIX8 |
uint8_t |
entier non signé en base 16, lettres minuscules. |
PRIX16 |
uint16_t |
entier non signé en base 16, lettres minuscules. |
PRIX32 |
uint32_t |
entier non signé en base 16, lettres minuscules. |
PRIX64 |
uint64_t |
entier non signé en base 16, lettres minuscules. |
PRIXLEAST8 |
uint_least8_t |
entier non signé en base 16, lettres minuscules. |
PRIXLEAST16 |
uint_least16_t |
entier non signé en base 16, lettres minuscules. |
PRIXLEAST32 |
uint_least32_t |
entier non signé en base 16, lettres minuscules. |
PRIXLEAST64 |
uint_least64_t |
entier non signé en base 16, lettres minuscules. |
PRIXFAST8 |
uint_fast8_t |
entier non signé en base 16, lettres minuscules. |
PRIXFAST16 |
uint_fast16_t |
entier non signé en base 16, lettres minuscules. |
PRIXFAST32 |
uint_fast32_t |
entier non signé en base 16, lettres minuscules. |
PRIXFAST64 |
uint_fast64_t |
entier non signé en base 16, lettres minuscules. |
PRIXMAX |
uintmax_t |
entier non signé en base 16, lettres minuscules. |
PRIXPTR |
uintptr_t |
entier non signé en base 16, lettres minuscules. |
L'exemple suivant affiche un entier 64 bits, un entier maximal et une valeur de pointeur convertie en entier.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <inttypes.h> #include <stdio.h> int main() { uint64_t size = UINT64_C( 1234567890123 ); intmax_t balance = INTMAX_C( -9000000000 ); uintptr_t address = (uintptr_t) &size; printf( "size == %" PRIu64 "\n", size ); printf( "balance == %" PRIdMAX "\n", balance ); printf( "address == 0x%" PRIxPTR "\n", address ); #ifdef PRIb32 printf( "binary == %" PRIb32 "\n", UINT32_C( 42 ) ); #endif return 0; } |
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :