« Programmation C++/Les types de base et les déclarations » : différence entre les versions

Contenu supprimé Contenu ajouté
Tavernierbot (discussion | contributions)
m Bot: Retouches cosmétiques
Ligne 1 :
{{Programmation C++}}
== Déclarations, types et identificateurs ==
=== Les variables ===
Comme la plupart des langages de programmation le C++ utilise la notion de variable. Une variable peut être vue comme une zone de la mémoire qui comprend une certaine valeur.
 
Ligne 7 :
le langage C++ impose un mécanisme de type pour indiquer la nature des données contenues dans un variable. Ainsi un double permettra de stocker un réel et un int permettra de stocker un entier. Par contre, il ne définit pas de système de représentation pour représenter ces variables. Ainsi, le standard ne spécifie pas comme on représente un double sous la forme d'une suite de bits. Le système de représentation utilisé peut donc varier entre deux ordinateurs ou en fonction du compilateur utilisé. Cette particularité peut parfois poser de graves problèmes de portabilité d'un programme.
 
=== Les déclarations ===
Toute variable en C++ doit être déclarée : la déclaration indique l'identificateur de la variable (son nom) et sa nature (son type).<br/>
'''Syntaxe :'''<br/>
Ligne 16 :
Cette déclaration défini une variable d'identificateur a qui contient un entier de type int.
 
=== Identificateurs valides ===
Un identificateur est une suite de caractères (pouvant être majuscules ou minuscules), de chiffres ou d'underscores ( underscore ou "tiret bas" est le caractère _ ). Cette suite ne peut pas commencer par un chiffre. Un identificateur ne peut contenir ni espace, ni tiret - (utilisé pour l'opération moins).<br/>
 
Ligne 56 :
* double (double précision)
* long double (précision étendue)
Le langage ne précise pas ni le système de représentation, ni la précision de ces différents formats. Le type long double est juste sensé être plus précis que le double, lui-même plus précis que le float.<br/>
Il est toutefois usuel (mais non obligatoire) de représenter le float sur 32 bits dans le format IEEE 754 simple précision et le double sur 64 bits dans le format IEEE 754 double précision.<br/><br/>
'''Interprétation des constantes réelles '''<br/>
Ligne 66 :
* 3.65F représente le float valant 3.65.
 
=== Les caractères ===
==== Le type char ====
Il s'agit du type usuel pour représenter un caractère. Aucun système de représentation n'est imposé pour les caractères et on utilise en général des dérivés du code ASCII. Un caractère doit juste être codé sur au moins 8 bits. Il est assez usuel toutefois d'utiliser exactement 8 bits pour représenter un char.<br/>
'''Exemple :'''<br/>
Ligne 80 :
a=b;
On récupère alors dans a le codage du caractère 'W'. On récupérera donc en général le code ASCII de 'W' dans la variable b.
==== Les types signed char et unsigned char ====
Lorsqu'on transfère un char dans un int, peut-on récupérer une valeur négative ? La réponse est oui si on utilise le type '''signed char''' et non si on utilise le type '''unsigned char'''. Ces types peuvent être utile losqu'on manipule des caractères non ASCII.
 
==== Le type wchar_t ====
Ce type de caractère n'existe qu'avec les compilateurs supportant l'Unicode (jeu de caractère internationnal standard couvrant les langues du monde entier). Ces caractères sont stockés sur 2 octets.
Les valeurs constantes de caractère (entre simple quote) ou de chaîne de caractères (entre double quote) doivent alors être précédées du caractère <tt>L</tt>.
Ligne 91 :
wchar_t[] chaine = L"Bonjour, monde !"; chaîne de caractère unicode
 
==== Unicode ou non ====
Certaines API C++ telle que Visual C++ sous Windows permettent de créer des applications supportant unicode ou non. Pour cela le type <tt>TCHAR</tt> est un type de caractère que le compilateur remplace par <tt>char<tt> ou <tt>wchar_t</tt> selon l'option Unicode. Dans ce cas, les valeurs constantes de chaînes et de caractères doivent être encadrées par la macro <tt>_T</tt>. Cette macro peut alors faire précéder les constantes d'un caractère <tt>L</tt> ou non.
 
Ligne 108 :
// a reçoit alors la valeur true.
 
=== L'opérateur sizeof ===
L'opérateur <code>sizeof</code> permet de savoir le nombre d'octets qu'occupe en RAM une certaine variable.
On peut écrire ''sizeof(a)'' pour savoir le nombre d'octets occupé par la variable a. On peut aussi écrire, ''sizeof(int)'' pour connaître le nombre d'octets occupés par une variable de type int. Cet opérateur est très utile lorsqu'on veut résoudre des problèmes de portabilité d'un programme.
 
=== Définir un alias de type ===
L'instruction <code>typedef</code> permet de définir un alias pour un type de données. Ceci permet dans certains cas de raccourcir le code, et dans tous les cas c'est l'occasion de donner un nom plus explicite à un type.
Ceci favorise une meilleur lecture du code.