Programmer en langage C
32
© Éditions Eyrolles
Voici quelques exemples d’évaluation d’expressions, dans lesquels on suppose que c1 et c2
sont de type char, tandis que n est de type int.
L’expression c1+1 fournit donc un résultat de type int, correspondant à la valeur du code du
caractère contenu dans c1 augmenté d’une unité.
Ici, bien que les deux opérandes soient de type char, il y a quand même conversion préalable
de leurs valeurs en int (promotions numériques).
Théoriquement, en plus de ce qui vient d’être dit, il faut tenir compte de l’attribut de signe des
caractères. Ainsi, lorsque l’on convertit un unsigned char en int, on obtient toujours un
nombre entre 0 et 255, tandis que lorsque l’on convertit un signed char en int, on obtient
un nombre compris entre -127 et 128. Nous y reviendrons en détail dans le chapitre 13.
Dans la première version de C (telle qu’elle a été définie initialement par Kernighan et Ritchie,
c’est-à-dire avant la normalisation par le comité ANSI), il était prévu une promotion numérique
float -> double. Certains compilateurs l’appliquent encore.
Les arguments d’appel d’une fonction peuvent être également soumis à des conversions. Le
mécanisme exact est toutefois assez complexe dans ce cas, car il tient compte de la manière
c1
+
1
|
|
int
|
promotion numérique char -> int
|___ + ___|
|
int
c1
-
c2
|
|
int
int
promotions numériques char -> int
|___ _ ___|
|
int
c1
+
n
|
|
int
|
promotion numérique pour c1
|___ + ___|
|
int
Delannoy Livre.book Page 32 Mercredi, 6. mai 2009 4:26 16
Précédent

- 45/281

Suivant