Types fondamentaux
(Voir aussi la liste des type utilitaires divers qui sont fournis par C++.)
Sommaire |
[modifier] Type booléen
- bool - type capable de contenir l'une des deux valeurs : vrai (true) ou faux (false).
[modifier] 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)
[modifier] 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).
[modifier] 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)
[modifier] 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).
[modifier] 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)
[modifier] 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.
[modifier] 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) |
|
| 64 | IEEE-754 | ± 1.7 · 10± 308 (~ 15 chiffres) |
| |
[modifier] Mots-clés
bool, true, false, char, wchar_t, char16_t, char32_t, int, short, long, signed, unsigned, float, double

