Types intégrés (C++)
Les types intégrés (également appelés types fondamentaux) sont spécifiés par la norme du langage C++ et sont intégrés au compilateur. Les types intégrés ne sont pas définis dans un fichier d’en-tête. Les types intégrés sont divisés en trois catégories principales : intégrale, à virgule flottante et void. Les types intégraux représentent des nombres entiers. Les types à virgule flottante peuvent spécifier des valeurs qui peuvent avoir des parties fractionnaires. La plupart des types intégrés sont traités comme des types distincts par le compilateur. Toutefois, certains types sont des synonymes ou traités comme des types équivalents par le compilateur.
Void, type
Le void
type décrit un jeu de valeurs vide. Aucune variable de type void
ne peut être spécifiée. Le void
type est utilisé principalement pour déclarer des fonctions qui ne retournent aucune valeur ou pour déclarer des pointeurs génériques vers des données non typées ou arbitrairement typées. Toute expression peut être convertie explicitement ou castée en type void
. Toutefois, ces expressions sont limitées aux utilisations suivantes :
Instruction d'expression. (Pour plus d’informations, consultez Expressions.)
Opérande gauche de l'opérateur virgule. (Pour plus d’informations, consultez Opérateur virgule.)
Deuxième ou troisième opérande de l’opérateur conditionnel (
? :
). (Pour plus d’informations, consultez Expressions avec l’opérateur conditionnel.)
std ::nullptr_t
Le mot clé nullptr
est une constante de pointeur Null de type std::nullptr_t
, qui est convertible en n’importe quel type de pointeur brut. Pour plus d’informations, consultez nullptr
.
Boolean, type
Le bool
type peut avoir des valeurs true
et false
. La taille du type est spécifique à l’implémentation bool
. Pour plus d’informations sur l’implémentation spécifique à Microsoft, consultez Tailles des types intégrés.
Types de caractères
Le char
type est un type de représentation de caractère qui encode efficacement les membres du jeu de caractères d’exécution de base. Le compilateur C++ traite les variables de type char
, signed char
et unsigned char
comme ayant différents types.
Spécifique à Microsoft : Les variables de type char
sont promues comme int
si de type signed char
par défaut, sauf si l’option /J
de compilation est utilisée. Dans ce cas, ils sont traités comme unsigned char
type et sont promus int
sans extension de signe.
Une variable de type wchar_t
est un type de caractère large ou multioctet. Utilisez le L
préfixe avant un littéral de caractère ou de chaîne pour spécifier le type de caractère large.
Spécifique à Microsoft : par défaut, wchar_t
est un type natif, mais vous pouvez utiliser /Zc:wchar_t-
pour créer wchar_t
un typedef pour unsigned short
. Le type __wchar_t
est un synonyme spécifique à Microsoft pour le type natif wchar_t
.
Le char8_t
type est utilisé pour la représentation de caractères UTF-8. Elle a la même représentation que unsigned char
, mais est traitée comme un type distinct par le compilateur. Le char8_t
type est nouveau en C++20. Spécifique à Microsoft : l’utilisation de l’option /std:c++20
du char8_t
compilateur ou ultérieure (par exemple/std:c++latest
).
Le char16_t
type est utilisé pour la représentation de caractères UTF-16. Il doit être suffisamment grand pour représenter n’importe quelle unité de code UTF-16. Il est traité comme un type distinct par le compilateur.
Le char32_t
type est utilisé pour la représentation de caractères UTF-32. Il doit être suffisamment grand pour représenter n’importe quelle unité de code UTF-32. Il est traité comme un type distinct par le compilateur.
Types virgule flottante
Les types à virgule flottante utilisent une représentation IEEE-754 pour fournir une approximation des valeurs fractionnaires sur un large éventail de grandeurs. Le tableau suivant répertorie les types à virgule flottante en C++ et les restrictions comparatives sur les tailles de type à virgule flottante. Ces restrictions sont imposées par la norme C++ et sont indépendantes de l’implémentation de Microsoft. La taille absolue des types à virgule flottante intégrée n’est pas spécifiée dans la norme.
Type | Contenu |
---|---|
float |
Le type float est le plus petit type à virgule flottante en C++. |
double |
Le type double est un type virgule flottante supérieur ou égal au type float , mais inférieur ou égal à la taille du type long double . |
long double |
Le type long double est un type virgule flottante supérieur ou égal au type double . |
Spécifique à Microsoft : représentation et long double
double
identique. Toutefois, long double
et double
sont traités comme des types distincts par le compilateur. Le compilateur Microsoft C++ utilise les représentations à virgule flottante IEEE-754 de 4 et 8 octets. Pour plus d’informations, consultez la représentation à virgule flottante IEEE.
Types d'entier
Le int
type est le type entier de base par défaut. Il peut représenter tous les nombres entiers sur une plage spécifique à l’implémentation.
Une représentation entière signée est une représentation qui peut contenir à la fois des valeurs positives et négatives. Elle est utilisée par défaut ou lorsque le signed
mot clé de modificateur est présent. Le unsigned
mot clé modificateur spécifie une représentation non signée qui ne peut contenir que des valeurs non négatives.
Un modificateur de taille spécifie la largeur en bits de la représentation entière utilisée. La langue prend en charge short
, long
et long long
les modificateurs. Un short
type doit avoir au moins 16 bits de large. Un long
type doit avoir au moins 32 bits de large. Un long long
type doit avoir au moins 64 bits de large. La norme spécifie une relation de taille entre les types intégraux :
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
Une implémentation doit conserver à la fois les exigences de taille minimale et la relation de taille pour chaque type. Toutefois, les tailles réelles peuvent varier entre les implémentations. Pour plus d’informations sur l’implémentation spécifique à Microsoft, consultez Tailles des types intégrés.
Le int
mot clé peut être omis lorsque signed
des modificateurs de taille ou de unsigned
taille sont spécifiés. Les modificateurs et int
le type, le cas échéant, peuvent apparaître dans n’importe quel ordre. Par exemple, short unsigned
et unsigned int short
reportez-vous au même type.
Synonymes de type entier
Les groupes de types suivants sont considérés comme synonymes par le compilateur :
short
, ,short int
signed short
, ,signed short int
unsigned short
,unsigned short int
int
, ,signed
signed int
unsigned
,unsigned int
long
, ,long int
signed long
, ,signed long int
unsigned long
,unsigned long int
long long
, ,long long int
signed long long
, ,signed long long int
unsigned long long
,unsigned long long int
Les types entiers spécifiques à Microsoft incluent la largeur __int8
spécifique, les __int16
__int32
types et __int64
les types. Ces types peuvent utiliser les modificateurs et unsigned
les signed
modificateurs. Le type de données __int8
est synonyme du type char
, le type __int16
est synonyme du type short
, le type __int32
est synonyme du type int
, et le type __int64
est synonyme du type long long
.
Tailles des types intégrés
La plupart des types intégrés ont des tailles définies par l’implémentation. Le tableau suivant répertorie la quantité de stockage requise pour les types intégrés dans Microsoft C++. En particulier, long
il s’agit de 4 octets, même sur les systèmes d’exploitation 64 bits.
Type | Taille |
---|---|
bool , , char , unsigned char char8_t , , signed char __int8 |
1 octet |
char16_t , , __int16 , unsigned short short , , wchar_t __wchar_t |
2 octets |
char32_t , float , , int __int32 , unsigned int , , long ,unsigned long |
4 octets |
double , , __int64 long double , , long long unsigned long long |
8 octets |
Consultez les plages de types de données pour obtenir un résumé de la plage de valeurs de chaque type.
Pour plus d’informations sur la conversion de type, consultez conversions standard.