C++ Types de variables
Les variables ne sont en fait que des noms pour les zones de stockage sur lesquelles un programme peut opérer.
En C++, il existe divers types de variables qui peuvent être utilisés pour stocker différents types de données.
En C++, chaque variable a un type spécifié. Le type détermine la taille et la disposition du stockage de la variable, la plage de valeurs pouvant être stockées en mémoire, et les opérateurs pouvant être appliqués à la variable.
Les noms de variables peuvent être composés de lettres, de chiffres et du caractère de soulignement. Ils doivent commencer par une lettre ou un caractère de soulignement.
Les lettres majuscules et minuscules sont différentes parce que C++ est sensible à la casse.
D'après les types de base expliqués dans le chapitre précédent, il existe les types de variables de base suivants, qui seront expliqués dans le chapitre suivant :
| Type | Description |
|---|---|
| bool | Type booléen, stocke la valeur true ou false, occupant 1 octet. |
| char | Type caractère, utilisé pour stocker des caractères ASCII, occupant généralement 1 octet. |
| int | Type entier, généralement utilisé pour stocker des entiers ordinaires, occupant généralement 4 octets. |
| float | Valeur à virgule flottante de simple précision, utilisée pour stocker des nombres à virgule flottante de simple précision. La simple précision a le format : 1 bit de signe, 8 bits d'exposant, 23 bits de fraction, occupant généralement 4 octets.
|
| double | Valeur à virgule flottante de double précision, utilisée pour stocker des nombres à virgule flottante de double précision. La double précision a 1 bit de signe, 11 bits d'exposant, 52 bits de fraction, occupant généralement 8 octets.
|
| void | Représente l'absence de type. |
| wchar_t | Type de caractère large, utilisé pour stocker une plage plus large de caractères, occupant généralement 2 ou 4 octets. |
C++ permet également de définir des variables de divers autres types, tels queles énumérations, les pointeurs, les tableaux, les références, les structures de données, les classesetc., qui seront expliqués dans les chapitres suivants.
Types entiers :
int: Utilisé pour représenter des entiers, occupant généralement 4 octets.short: Utilisé pour représenter des entiers courts, occupant généralement 2 octets.long: Utilisé pour représenter des entiers longs, occupant généralement 4 octets.long long: Utilisé pour représenter des entiers plus longs, occupant généralement 8 octets.
Types à virgule flottante :
float: Utilisé pour représenter des nombres à virgule flottante de simple précision, occupant généralement 4 octets.double: Utilisé pour représenter les nombres à virgule flottante en double précision, occupant généralement 8 octets.long double: Utilisé pour représenter des nombres à virgule flottante de précision supérieure ; le nombre d'octets occupés peut varier selon l'implémentation.
Types de caractères :
char: Utilisé pour représenter des caractères, occupant généralement 1 octet.wchar_t: Utilisé pour représenter des caractères larges, occupant généralement 2 ou 4 octets.char16_t: Utilisé pour représenter des caractères Unicode 16 bits, occupant 2 octets.char32_t: Utilisé pour représenter des caractères Unicode 32 bits, occupant 4 octets.
Type booléen :
boolUtilisé pour représenter des valeurs booléennes, ne peut prendre quetrueoufalse。
Types d'énumération :
enum: Utilisé pour définir un ensemble de constantes entières nommées.
Types de pointeurs :
type*Utilisé pour représenter des pointeurs vers un typetypepointeur vers l’objet.
Types de tableaux :
type[]outype[size]: Utilisé pour définir un tableau composé d’éléments du même type.
Types de structures :
struct: Utilisé pour définir une structure contenant plusieurs membres de types différents.
Types de classes :
class: Utilisé pour définir un type personnalisé avec des attributs et des méthodes.
Types d’union :
union: Utilisé pour définir un type de données spécial qui peut stocker différents types de données au même emplacement mémoire.
En C++, la taille d’un type (c’est-à-dire le nombre d’octets qu’il occupe) dépend du compilateur et de l’architecture de l’ordinateur. Cependant, la norme C++ spécifie les plages minimales pour différents types entiers, plutôt que des nombres d’octets spécifiques, afin de garantir que le code s’exécute correctement sur différents systèmes.
Veuillez noter que les plages des types ci-dessus ne sont que les exigences minimales spécifiées par la norme C++. En pratique, sur de nombreux systèmes, ces types peuvent occuper plus d’octets. Par exemple, sur de nombreux ordinateurs modernes, int occupe généralement 4 octets, tandis que long peut occuper 8 octets.
Ensuite, nous expliquerons comment définir, déclarer et utiliser des variables de différents types.
Définition de variable en C++
Une définition de variable indique au compilateur où et comment créer l'espace de stockage pour la variable.

Une définition de variable spécifie un type de données et contient une liste d'une ou plusieurs variables de ce type, comme indiqué ci-dessous :
type variable_list;
Ici,typedoit être un type de données C++ valide, qui peut être char, wchar_t, int, float, double, bool, ou tout objet défini par l'utilisateur,variable_listpeut être constitué d'un ou plusieurs noms d'identifiants, plusieurs identifiants étant séparés par des virgules. Plusieurs déclarations valides sont listées ci-dessous :
lineint i, j, k;déclare et définit les variables i, j et k, ce qui indique au compilateur de créer des variables nommées i, j, k de type int.
Les variables peuvent être initialisées (recevoir une valeur initiale) au moment de la déclaration. Un initialiseur se compose d'un signe égal suivi d'une expression constante, comme indiqué ci-dessous :
Voici quelques exemples :
Définitions sans initialisation : les variables ayant une durée de stockage statique sont implicitement initialisées à NULL (toutes les valeurs d'octet sont 0), tandis que les valeurs initiales de toutes les autres variables sont indéfinies.
Déclaration de variable en C++
Une déclaration de variable assure au compilateur que la variable existe avec le type et le nom donnés, afin que le compilateur puisse poursuivre la compilation sans avoir besoin des détails complets de la variable. Une déclaration de variable n'a de sens qu'au moment de la compilation ; au moment de l'édition des liens du programme, le compilateur a besoin de la définition réelle de la variable.
Lorsque vous utilisez plusieurs fichiers et que vous définissez une variable dans un seul d'entre eux (le fichier définissant la variable est disponible au moment de l'édition des liens du programme), les déclarations de variables deviennent très utiles. Vous pouvez utiliser le mot-cléexternpour déclarer une variable n'importe où. Bien que vous puissiez déclarer une variable plusieurs fois dans un programme C++, une variable ne peut être définie qu'une seule fois dans un fichier, une fonction ou un bloc de code.
Exemple
Essayez l'exemple suivant, où les variables sont déclarées en haut, mais elles sont définies et initialisées à l'intérieur de la fonction main :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
30 23.3333
De même, lorsque vous déclarez une fonction, vous fournissez un nom de fonction, tandis que la définition réelle de la fonction peut être placée n'importe où. Par exemple :
Lvalues et Rvalues en C++
Il existe deux types d'expressions en C++ :
- lvalue :Une expression qui fait référence à un emplacement mémoire est appelée expression lvalue. Une lvalue peut apparaître du côté gauche ou droit de l'opérateur d'affectation.
- rvalue :Le terme rvalue désigne une valeur stockée à une certaine adresse en mémoire. Une rvalue est une expression à laquelle on ne peut pas affecter de valeur ; c'est-à-dire qu'une rvalue peut apparaître du côté droit de l'opérateur d'affectation, mais ne peut pas apparaître du côté gauche.
Les variables sont des lvalues, donc elles peuvent apparaître du côté gauche de l'opérateur d'affectation. Les littéraux numériques sont des rvalues, donc on ne peut pas leur affecter de valeur et ils ne peuvent pas apparaître du côté gauche de l'opérateur d'affectation. L'instruction suivante est valide :
int g = 20;
Mais l'instruction suivante n'est pas valide et générera une erreur de compilation :
10 = 20;autres extensions

