◐ Shell
clean mode source ↗

Types fondamentaux — cppreference.com

De cppreference.com

(Voir aussi la liste des type utilitaires divers qui sont fournis par C++.)

Type booléen

bool - type capable de contenir l'une des deux valeurs : vrai (true) ou faux (false).

Types de caractères

signed char - type pour la représentation des caractères signés.
unsigned char - type pour la représentation des caractères non signés.
char - type représentant un caractère (équivalent à signed char ou unsigned char selon le système cible).
wchar_t - type représentant caractère large. (ex. UTF-8)
char16_t - type représentant un caractère UTF-16. (depuis C++11)
char32_t - type représentant un caractère UTF-32. (depuis C++11)

Types entiers

int - type entier de base. Peut être omis si l'une des modificateurs suivants est présent. S'il n'y a pas de modificateur de longueur spécifié, le type est garanti d'être d'un grandeur d'au moins 16 bits. Par contre, sur un système 32 ou 64 bits, il est presque exclusivement garanti d'avoir une grandeur d'au moins 32 bits (voir plus bas).

Modificateurs

Modifient le type entier. Peuvent être présentés dans n'importe quel ordre. Seulement un élément de chaque groupe peut être présent.

Signé/Non-signé

signed - le type cible aura une représentation signée. (Modificateur par défaut lorsque omis)
unsigned - le type cible aura une représentation non-signée.

Grandeur

short - Le type cible sera optimisé pour l'espace et aura une grandeur d'au moins 16 bits.
long - Le type cible aura une grandeur d'au moins 32 bits.
long long - Le type cible aura une grandeur d'au moins 64 bits. (depuis C++11)

Propriétés

Le tableau suivant résume tout les types entiers et leurs propriétés :

Déterminant du type Type équivalent Largeur (bits) en mémoire
C++ standard LP32 ILP32 LLP64 LP64

short

short int au moins
16
16 16 16 16

short int

signed short

signed short int

unsigned short

unsigned short int

unsigned short int

int

int au moins
16
16 32 32 32

signed

signed int

unsigned

unsigned int

unsigned int

long

long int au moins
32
32 32 32 64

long int

signed long

signed long int

unsigned long

unsigned long int

unsigned long int

long long

long long int
(C++11)
au moins
64
64 64 64 64

long long int

signed long long

signed long long int

unsigned long long

unsigned long long int
(C++11)

unsigned long long int

N.B.: le Standard C++ garantit la relation suivante : 1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long).

Les modèles de données

Systèmes 32 bits :

  • LP32:
  • Win16 API
  • ILP32;
  • Win32 API
  • Unix and Unix-like systems (Linux, Mac OS X)

Systèmes 64 bits :

  • LLP64
  • Win64 API
  • LP64
  • Unix and Unix-like systems (Linux, Mac OS X)

Types à virgules flottantes

float - type à virgule flottante à précision simple. Il s'agit habituellement du type IEEE-754 32 bits.
double - type à virgule flottante à précision double. Il s'agit habituellement du type IEEE-754 64 bits.
long double - type à virgule flottante à précision étendue. N'est pas nécessairement associé aux types déterminés par IEEE-754. Il s'agit habituellement du type à virgule flottante 80-bit x87 sur les architectures x86 et x86-64.

Plage de valeurs

Le tableau suivant fournit une référence pour les limites des représentations numériques communes. Notez que tous les modèles de données populaires (Incluant ILP32, LP32, LP64 et LLP64) utilisent le complément à deux pour les représentation des entiers en mémoire. Aussi, le Standard C++ ne spécifie pas le type de représentation à utiliser, il garantie néanmoins la limite de la représentation complément à un.

Type Taille en bits Format Plage de valeurs
Approximate Exact
caractère 8 signé (complément à un) -127 to 127
signé (complément à deux) -128 to 127
non-signé 0 to 255
entier 16 signé (complément à un) ± 3.27 · 104 -32767 to 32767
signé (complément à deux) -32768 to 32767
non-signé 0 to 6.55 · 104 0 to 65535
32 signé (complément à un) ± 2.14 · 109 -2,147,483,647 to 2,147,483,647
signé (complément à deux) -2,147,483,648 to 2,147,483,647
non-signé 0 to 4.29 · 109 0 to 4,294,967,295
64 signé (complément à un) ± 9.22 · 1018 -9,223,372,036,854,775,807 to 9,223,372,036,854,775,807
signé (complément à deux) -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
non-signé 0 to 1.84 · 1019 0 to 18,446,744,073,709,551,615
floating
point
32 IEEE-754 ± 3.4 · 10± 38
(~ 7 chiffres)
  • min subnormal: ± 1.401,298,4 · 10-47
  • min normal: ± 1.175,494,3 · 10-38
  • max: ± 3.402,823,4 · 1038
64 IEEE-754 ± 1.7 · 10± 308
(~ 15 chiffres)
  • min subnormal: ± 4.940,656,458,412 · 10-324
  • min normal: ± 2.225,073,858,507,201,4 · 10-308
  • max: ± 1.797,693,134,862,315,7 · 10308

Mots-clés

bool, true, false, char, wchar_t, char16_t, char32_t, int, short, long, signed, unsigned, float, double

Voir aussi