Namespaces
Variants

Fixed width integer types (since C99)

From cppreference.net
< c ‎ | types

Table des matières

Types

Défini dans l'en-tête <stdint.h>
int8_t
int16_t
int32_t
int64_t
type entier signé avec une largeur de
exactement 8, 16, 32 et 64 bits respectivement
sans bits de remplissage et utilisant le complément à 2 pour les valeurs négatives
(fourni uniquement si l'implémentation supporte directement le type)
int_fast8_t
int_fast16_t
int_fast32_t
int_fast64_t
type entier signé le plus rapide avec une largeur d'
au moins 8, 16, 32 et 64 bits respectivement
int_least8_t
int_least16_t
int_least32_t
int_least64_t
plus petit type entier signé avec une largeur d'
au moins 8, 16, 32 et 64 bits respectivement
intmax_t type entier de largeur maximale
intptr_t type entier capable de contenir un pointeur
uint8_t
uint16_t
uint32_t
uint64_t
type entier non signé avec une largeur de
exactement 8, 16, 32 et 64 bits respectivement
(fourni uniquement si l'implémentation supporte directement le type)
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
type entier non signé le plus rapide avec une largeur d'
au moins 8, 16, 32 et 64 bits respectivement
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
plus petit type entier non signé avec une largeur d'
au moins 8, 16, 32 et 64 bits respectivement
uintmax_t type entier non signé de largeur maximale
uintptr_t type entier non signé capable de contenir un pointeur

L'implémentation peut définir des noms de typedef int N _t , int_fast N _t , int_least N _t , uint N _t , uint_fast N _t , et uint_least N _t lorsque N n'est pas 8, 16, 32 ou 64. Les noms de typedef de la forme int N _t ne peuvent être définis que si l'implémentation prend en charge un type entier de cette largeur sans remplissage. Ainsi, uint24_t désigne un type entier non signé avec une largeur exactement de 24 bits.

Chacune des macros listées ci-dessous est définie si et seulement si l'implémentation définit le nom de type correspondant. Les macros INT N _C et UINT N _C correspondent respectivement aux noms de types int_least N _t et uint_least N _t .

Constantes de macro

Défini dans l'en-tête <stdint.h>
Entiers signés : largeur
INT8_WIDTH INT16_WIDTH INT32_WIDTH INT64_WIDTH
(C23) (optionnel)
largeur en bits d'un objet de type int8_t , int16_t , int32_t , int64_t (exactement 8, 16, 32, 64)
(constante macro)
INT_FAST8_WIDTH INT_FAST16_WIDTH INT_FAST32_WIDTH INT_FAST64_WIDTH
(C23)
largeur en bits d'un objet de type int_fast8_t , int_fast16_t , int_fast32_t , int_fast64_t
(constante macro)
INT_LEAST8_WIDTH INT_LEAST16_WIDTH INT_LEAST32_WIDTH INT_LEAST64_WIDTH
(C23)
largeur en bits d'un objet de type int_least8_t , int_least16_t , int_least32_t , int_least64_t
(constante macro)
INTPTR_WIDTH
(C23) (optionnel)
largeur en bits d'un objet de type intptr_t
(constante macro)
INTMAX_WIDTH
(C23)
largeur en bits d'un objet de type intmax_t
(constante macro)
Entiers signés : valeur minimale
INT8_MIN INT16_MIN INT32_MIN INT64_MIN
valeur minimale d'un objet de type int8_t , int16_t , int32_t , int64_t
(constante macro)
INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN
valeur minimale d'un objet de type int_fast8_t , int_fast16_t , int_fast32_t , int_fast64_t
(constante macro)
INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN
valeur minimale d'un objet de type int_least8_t , int_least16_t , int_least32_t , int_least64_t
(constante macro)
INTPTR_MIN
valeur minimale d'un objet de type intptr_t
(constante macro)
INTMAX_MIN
valeur minimale d'un objet de type intmax_t
(constante macro)
Entiers signés : valeur maximale
INT8_MAX INT16_MAX INT32_MAX INT64_MAX
valeur maximale d'un objet de type int8_t , int16_t , int32_t , int64_t
(constante macro)
INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX
valeur maximale d'un objet de type int_fast8_t , int_fast16_t , int_fast32_t , int_fast64_t
(constante macro)
INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX
valeur maximale d'un objet de type int_least8_t , int_least16_t , int_least32_t , int_least64_t
(constante macro)
INTPTR_MAX
valeur maximale d'un objet de type intptr_t
(constante macro)
INTMAX_MAX
valeur maximale d'un objet de type intmax_t
(constante macro)
Entiers non signés : largeur
UINT8_WIDTH UINT16_WIDTH UINT32_WIDTH UINT64_WIDTH
(C23) (optionnel)
largeur en bits d'un objet de type uint8_t , uint16_t , uint32_t , uint64_t (exactement 8, 16, 32, 64)
(constante macro)
UINT_FAST8_WIDTH UINT_FAST16_WIDTH UINT_FAST32_WIDTH UINT_FAST64_WIDTH
(C23)
largeur en bits d'un objet de type uint_fast8_t , uint_fast16_t , uint_fast32_t , uint_fast64_t
(constante macro)
UINT_LEAST8_WIDTH UINT_LEAST16_WIDTH UINT_LEAST32_WIDTH UINT_LEAST64_WIDTH
(C23)
largeur en bits d'un objet de type uint_least8_t , uint_least16_t , uint_least32_t , uint_least64_t
(constante macro)
UINTPTR_WIDTH
(C23) (optionnel)
largeur en bits d'un objet de type uintptr_t
(constante macro)
UINTMAX_WIDTH
(C23)
largeur en bits d'un objet de type uintmax_t
(constante macro)
Entiers non signés : valeur maximale
UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX
valeur maximale d'un objet de type uint8_t , uint16_t , uint32_t , uint64_t
(constante macro)
UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX
valeur maximale d'un objet de type uint_fast8_t , uint_fast16_t , uint_fast32_t , uint_fast64_t
(constante macro)
UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX
valeur maximale d'un objet de type uint_least8_t , uint_least16_t , uint_least32_t , uint_least64_t
(constante macro)
UINTPTR_MAX
valeur maximale d'un objet de type uintptr_t
(constante macro)
UINTMAX_MAX
valeur maximale d'un objet de type uintmax_t
(constante macro)

Macros de fonction pour les constantes entières de largeur minimale

INT8_C INT16_C INT32_C INT64_C
se développe en une expression constante entière ayant la valeur spécifiée par son argument et le type int_least8_t , int_least16_t , int_least32_t , int_least64_t respectivement
(macro de fonction)
INTMAX_C
se développe en une expression constante entière ayant la valeur spécifiée par son argument et le type intmax_t
(macro de fonction)
UINT8_C UINT16_C UINT32_C UINT64_C
se développe en une expression constante entière ayant la valeur spécifiée par son argument et le type uint_least8_t , uint_least16_t , uint_least32_t , uint_least64_t respectivement
(macro de fonction)
UINTMAX_C
se développe en une expression constante entière ayant la valeur spécifiée par son argument et le type uintmax_t
(macro de fonction)
#include <stdint.h>
UINT64_C(0x123) // pourrait s'étendre à 0x123ULL ou 0x123UL

Constantes de macro de format

Défini dans l'en-tête <inttypes.h>

Constantes de format pour la famille de fonctions fprintf

Chacune des PRI macros listées ici est définie si et seulement si l'implémentation définit le nom de type correspondant.

Équivalent
pour int ou
unsigned int
Description Macros pour les types de données




[u]int x _t




[u]int_least x _t
[u]int_fast x _t
[u]intmax_t
[u]intptr_t
d affichage d'une valeur entière décimale signée PRId x PRIdLEAST x PRIdFAST x PRIdMAX PRIdPTR
i PRIi x PRIiLEAST x PRIiFAST x PRIiMAX PRIiPTR
u affichage d'une valeur entière décimale non signée PRIu x PRIuLEAST x PRIuFAST x PRIuMAX PRIuPTR
o affichage d'une valeur entière octale non signée PRIo x PRIoLEAST x PRIoFAST x PRIoMAX PRIoPTR
x affichage d'une valeur entière hexadécimale minuscule non signée PRIx x PRIxLEAST x PRIxFAST x PRIxMAX PRIxPTR
X affichage d'une valeur entière hexadécimale majuscule non signée PRIX x PRIXLEAST x PRIXFAST x PRIXMAX PRIXPTR

Constantes de format pour la famille de fonctions fscanf

Chacune des SCN macros listées ici est définie si et seulement si l'implémentation définit le nom de type correspondant et possède un modificateur de longueur fscanf approprié pour le type.

Équivalent
pour int ou
unsigned int
Description Macros pour les types de données




[u]int x _t




[u]int_least x _t
[u]int_fast x _t
[u]intmax_t
[u]intptr_t
d saisie d'une valeur entière décimale signée SCNd x SCNdLEAST x SCNdFAST x SCNdMAX SCNdPTR
i saisie d'une valeur entière signée (la base est déterminée par les premiers caractères analysés) SCNi x SCNiLEAST x SCNiFAST x SCNiMAX SCNiPTR
u saisie d'une valeur entière décimale non signée SCNu x SCNuLEAST x SCNuFAST x SCNuMAX SCNuPTR
o saisie d'une valeur entière octale non signée SCNo x SCNoLEAST x SCNoFAST x SCNoMAX SCNoPTR
x saisie d'une valeur entière hexadécimale non signée SCNx x SCNxLEAST x SCNxFAST x SCNxMAX SCNxPTR

Exemple

Voir aussi la note de compatibilité C++ concernant les espaces avant les macros de format utilisées dans cet exemple.

#include <inttypes.h>
#include <stdio.h>
int main(void)
{
    printf("%zu\n", sizeof(int64_t));
    printf("%s\n", PRId64);
    printf("%+" PRId64 "\n", INT64_MIN);
    printf("%+" PRId64 "\n", INT64_MAX);
    int64_t n = 7;
    printf("%+" PRId64 "\n", n);
}

Sortie possible :

8
lld
-9223372036854775808
+9223372036854775807
+7

Références

  • Norme C23 (ISO/IEC 9899:2024):
  • 7.8.1 Macros pour les spécificateurs de format (p: TBD)
  • 7.18 Types entiers <stdint.h> (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.8.1 Macros pour les spécificateurs de format (p : 158-159)
  • 7.18 Types entiers <stdint.h> (p : 212-216)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.8.1 Macros pour les spécificateurs de format (p: 217-218)
  • 7.18 Types entiers <stdint.h> (p: 289-295)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.8.1 Macros pour les spécificateurs de format (p: 198-199)
  • 7.18 Types entiers <stdint.h> (p: 255-261)

Voir aussi

Documentation C++ pour Types entiers de largeur fixe
Documentation C++ pour Littéraux définis par l'utilisateur ( note sur les macros de formatage )