Types fondamentaux
(Voir aussi la liste des type utilitaires divers qui sont fournis par C++.)
Type boolen
bool- type capable de contenir l'une des deux valeurs : vrai (true) ou faux (false).
Types de caractres
signed char- type pour la reprsentation des caractres signs.unsigned char- type pour la reprsentation des caractres non signs.char- type reprsentant un caractre (quivalentsigned charouunsigned charselon le systme cible).wchar_t- type reprsentant caractre large. (ex. UTF-8)char16_t- type reprsentant un caractre UTF-16. (depuis C++11)char32_t- type reprsentant un caractre UTF-32. (depuis C++11)
Types entiers
int- type entier de base. Peut tre omis si l'une des modificateurs suivants est prsent. S'il n'y a pas de modificateur de longueur spcifi, le type est garanti d'tre d'un grandeur d'au moins 16 bits. Par contre, sur un systme 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 prsents dans n'importe quel ordre. Seulement un lment de chaque groupe peut tre prsent.
Sign/Non-sign
signed- le type cible aura une reprsentation signe. (Modificateur par dfaut lorsque omis)unsigned- le type cible aura une reprsentation non-signe.
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)
Proprits
Le tableau suivant rsume tout les types entiers et leurs proprits :
| Dterminant du type | Type quivalent | Largeur (bits) en mmoire | ||||
|---|---|---|---|---|---|---|
| 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 modles de donnes
Systmes 32 bits :
- LP32:
- Win16 API
- ILP32;
- Win32 API
- Unix and Unix-like systems (Linux, Mac OS X)
Systmes 64 bits :
- LLP64
- Win64 API
- LP64
- Unix and Unix-like systems (Linux, Mac OS X)
Types virgules flottantes
float- type virgule flottante prcision simple. Il s'agit habituellement du type IEEE-754 32 bits.
double- type virgule flottante prcision double. Il s'agit habituellement du type IEEE-754 64 bits.
long double- type virgule flottante prcision tendue. N'est pas ncessairement associ aux types dtermins 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 rfrence pour les limites des reprsentations numriques communes. Notez que tous les modles de donnes populaires (Incluant ILP32, LP32, LP64 et LLP64) utilisent le complment deux pour les reprsentation des entiers en mmoire. Aussi, le Standard C++ ne spcifie pas le type de reprsentation utiliser, il garantie nanmoins la limite de la reprsentation complment un.
| Type | Taille en bits | Format | Plage de valeurs | |
|---|---|---|---|---|
| Approximate | Exact | |||
| caractre | 8 | sign (complment un) | -127 to 127 | |
| sign (complment deux) | -128 to 127 | |||
| non-sign | 0 to 255 | |||
| entier | 16 | sign (complment un) | 3.27 104 | -32767 to 32767 |
| sign (complment deux) | -32768 to 32767 | |||
| non-sign | 0 to 6.55 104 | 0 to 65535 | ||
| 32 | sign (complment un) | 2.14 109 | -2,147,483,647 to 2,147,483,647 | |
| sign (complment 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 (complment un) | 9.22 1018 | -9,223,372,036,854,775,807 to 9,223,372,036,854,775,807 | |
| sign (complment 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) |
| |
Mots-cls
bool, true, false, char, wchar_t, char16_t, char32_t, int, short, long, signed, unsigned, float, double