© Éditions Eyrolles
39
chapitre n° 3
Les opérateurs et les expressions en langage C
Une telle conversion reviendrait à changer le type de la lvalue figurant à gauche de cet opérateur,
ce qui n’a pas de sens.
En fait, lorsque le type de l’expression figurant à droite n’est pas du même type que la lvalue
figurant à gauche, il y a conversion systématique de la valeur de l’expression (qui est évaluée
suivant les règles habituelles) dans le type de la lvalue. Une telle conversion imposée ne respecte
plus nécessairement la hiérarchie des types qui est de rigueur dans le cas des conversions
implicites. Elle peut donc conduire, suivant les cas, à une dégradation plus ou moins importante de l’information (par exemple lorsque l’on convertit un double en int, on perd la partie
décimale du nombre).
Nous ferons le point sur ces différentes possibilités de conversions imposées par les affectations
dans le paragraphe 9.
7 Les opérateurs d’incrémentation et de décrémentation
7.1 Leur rôle
Dans des programmes écrits dans un langage autre que C, on rencontre souvent des expressions (ou des instructions) telles que :
i = i + 1
n = n - 1
qui incrémentent ou qui décrémentent de 1 la valeur d’une variable (ou plus généralement
d’une lvalue).
En C, ces actions peuvent être réalisées par des opérateurs « unaires » portant sur cette lvalue.
Ainsi, l’expression :
++i
a pour effet d’incrémenter de 1 la valeur de i, et sa valeur est celle de i après incrémentation.
Là encore, comme pour l’affectation, nous avons affaire à une expression qui non seulement
possède une valeur, mais qui, de surcroît, réalise une action (incrémentation de i).
Il est important de voir que la valeur de cette expression est celle de i après incrémentation.
Ainsi, si la valeur de i est 5, l’expression :
n = ++i - 5
affectera à i la valeur 6 et à n la valeur 1.
En revanche, lorsque cet opérateur est placé après la lvalue sur laquelle il porte, la valeur de
l’expression correspondante est celle de la variable avant incrémentation.
Delannoy Livre.book Page 39 Mercredi, 6. mai 2009 4:26 16
Précédent

- 52/281

Suivant