© Éditions Eyrolles
31
chapitre n° 3
Les opérateurs et les expressions en langage C
Notez bien que les valeurs des trois variables de type short sont d’abord soumises à la
promotion numérique short -> int ; après quoi, on applique les mêmes règles que précédemment.
En principe, comme nous l’avons déjà dit, les types entiers peuvent être non signés (unsigned).
Nous y reviendrons dans le chapitre 13. Pour l’instant, sachez que nous vous déconseillons
fortement de mélanger, dans une même expression, des types signés et des types non signés,
dans la mesure où les conversions qui en résultent sont généralement dénuées de sens (et
simplement faites pour préserver un motif binaire).
3.4 Le cas du type char
A priori, vous pouvez être surpris de l’existence d’une conversion systématique (promotion
numérique) de char en int et vous interroger sur sa signification. En fait, il ne s’agit que
d’une question de point de vue. En effet, une valeur de type caractère peut être considérée de
deux façons :
●
comme le caractère concerné : a, Z, fin de ligne,
●
comme le code de ce caractère, c’est-à-dire un motif de 8 bits ; or à ce dernier on peut
toujours faire correspondre un nombre entier (le nombre qui, codé en binaire, fournit le
motif en question) ; par exemple, dans le code ASCII, le caractère E est représenté par
le motif binaire 01000101, auquel on peut faire correspondre le nombre 65.
Effectivement, on peut dire qu’en quelque sorte le langage C confond facilement un caractère
avec la valeur (entier) du code qui le représente. Notez bien que, comme toutes les machines
n’emploient pas le même code pour les caractères, l’entier associé à un caractère donné ne sera
pas toujours le même.
p1
*
p2
+
p3
*
x
|
|
|
|
int
int
int
|
promotions numériques short -> int
|____ * ____|
|
|
addition
|
float
|
conversion d’ajustement de type
int
|___ * ___ |
addition
|
|
float
float
conversion d’ajustement de type
|_________ + _________|
|
float
Delannoy Livre.book Page 31 Mercredi, 6. mai 2009 4:26 16
Précédent

- 44/281

Suivant