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 typestd::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 charet 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 doubledouble 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. Il est utilisé par défaut ou lorsque le signed modificateur mot clé est présent. Le unsigned modificateur mot clé 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, longet 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.

La int mot clé peut être omise lorsque signeddes modificateurs de taille ou de unsignedtaille 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 __int8spécifique, les __int16__int32types 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, char8_t, unsigned char, signed char, __int8 1 octet
char16_t, __int16, short, unsigned short, wchar_t, __wchar_t 2 octets
char32_t, float, __int32, int, 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.

Voir aussi

Plages de types de données