Programmer en langage C
40
© Éditions Eyrolles
Ainsi, si i vaut 5, l’expression :
n = i++ - 5
affectera à i la valeur 6 et à n la valeur 0 (car ici la valeur de l’expression i++ est 5).
On dit que ++ est :
●
un opérateur de préincrémentation lorsqu’il est placé à gauche de la lvalue sur laquelle il
porte,
●
un opérateur de postincrémentation lorsqu’il est placé à droite de la lvalue sur laquelle
il porte.
Bien entendu, lorsque seul importe l’effet d’incrémentation d’une lvalue, cet opérateur peut
être indifféremment placé avant ou après. Ainsi, ces deux instructions (ici, il s’agit bien d’instructions car les expressions sont terminées par un point-virgule - leur valeur se trouve donc
inutilisée) sont équivalentes :
i++ ;
++i ;
De la même manière, il existe un opérateur de décrémentation noté -- qui, suivant les cas,
sera :
●
un opérateur de prédécrémentation lorsqu’il est placé à gauche de la lvalue sur laquelle il
porte,
●
un opérateur de postdécrémentation lorsqu’il est placé à droite de la lvalue sur laquelle il
porte.
7.2 Leurs priorités
Les priorités élevées de ces opérateurs unaires (voir tableau en fin de chapitre) permettent
d’écrire des expressions assez compliquées sans qu’il soit nécessaire d’employer des parenthèses pour isoler la lvalue sur laquelle ils portent. Ainsi, l’expression suivante a un sens :
3 * i++ * j-- + k++
(si * avait été plus prioritaire que la postincrémentation, ce dernier aurait été appliqué à
l’expression 3*i qui n’est pas une lvalue ; l’expression n’aurait alors pas eu de sens).
Il est toujours possible (mais non obligatoire) de placer un ou plusieurs espaces entre un opérateur et les opérandes sur lesquels il porte. Nous utilisons souvent cette latitude pour accroître
la lisibilité de nos instructions. Cependant, dans le cas des opérateurs d’incrémentation, nous
avons plutôt tendance à ne pas le faire, cela pour mieux rapprocher l’opérateur de la lvalue sur
laquelle il porte.
Delannoy Livre.book Page 40 Mercredi, 6. mai 2009 4:26 16
40
© Éditions Eyrolles
Ainsi, si i vaut 5, l’expression :
n = i++ - 5
affectera à i la valeur 6 et à n la valeur 0 (car ici la valeur de l’expression i++ est 5).
On dit que ++ est :
●
un opérateur de préincrémentation lorsqu’il est placé à gauche de la lvalue sur laquelle il
porte,
●
un opérateur de postincrémentation lorsqu’il est placé à droite de la lvalue sur laquelle
il porte.
Bien entendu, lorsque seul importe l’effet d’incrémentation d’une lvalue, cet opérateur peut
être indifféremment placé avant ou après. Ainsi, ces deux instructions (ici, il s’agit bien d’instructions car les expressions sont terminées par un point-virgule - leur valeur se trouve donc
inutilisée) sont équivalentes :
i++ ;
++i ;
De la même manière, il existe un opérateur de décrémentation noté -- qui, suivant les cas,
sera :
●
un opérateur de prédécrémentation lorsqu’il est placé à gauche de la lvalue sur laquelle il
porte,
●
un opérateur de postdécrémentation lorsqu’il est placé à droite de la lvalue sur laquelle il
porte.
7.2 Leurs priorités
Les priorités élevées de ces opérateurs unaires (voir tableau en fin de chapitre) permettent
d’écrire des expressions assez compliquées sans qu’il soit nécessaire d’employer des parenthèses pour isoler la lvalue sur laquelle ils portent. Ainsi, l’expression suivante a un sens :
3 * i++ * j-- + k++
(si * avait été plus prioritaire que la postincrémentation, ce dernier aurait été appliqué à
l’expression 3*i qui n’est pas une lvalue ; l’expression n’aurait alors pas eu de sens).
Il est toujours possible (mais non obligatoire) de placer un ou plusieurs espaces entre un opérateur et les opérandes sur lesquels il porte. Nous utilisons souvent cette latitude pour accroître
la lisibilité de nos instructions. Cependant, dans le cas des opérateurs d’incrémentation, nous
avons plutôt tendance à ne pas le faire, cela pour mieux rapprocher l’opérateur de la lvalue sur
laquelle il porte.
Delannoy Livre.book Page 40 Mercredi, 6. mai 2009 4:26 16
