© Éditions Eyrolles
45
chapitre n° 3
Les opérateurs et les expressions en langage C
Le calcul de cette expression amène tout d’abord à affecter la valeur de y à x. Puis, si cette
valeur est non nulle, on affecte la valeur de a à z. Si, au contraire, cette valeur est nulle, on
affecte la valeur de b à z.
Il est clair que cette expression est différente de :
z = x = y ? a : b
laquelle serait évaluée comme :
z = x = ( y ? a : b )
Bien entendu, une expression conditionnelle peut, comme toute expression, apparaître à son
tour dans une expression plus complexe. Voici, par exemple, une instruction (notez qu’il s’agit
effectivement d’une instruction, car elle se termine par un point-virgule) affectant à z la plus
grande des valeurs de a et de b :
z = ( a>b ? a : b ) ;
De même, rien n’empêche que l’expression conditionnelle soit évaluée sans que sa valeur soit
utilisée comme dans cette instruction :
a>b ? i++ : i-- ;
Ici, suivant que la condition a>b est vraie ou fausse, on incrémentera ou on décrémentera la
variable i.
12 L’opérateur séquentiel
Nous avons déjà vu qu’en C la notion d’expression était beaucoup plus générale que dans la
plupart des autres langages. L’opérateur dit « séquentiel » va élargir encore un peu plus cette
notion d’expression. En effet, celui-ci permet, en quelque sorte, d’exprimer plusieurs calculs
successifs au sein d’une même expression. Par exemple :
a * b , i + j
est une expression qui évalue d’abord a*b, puis i+j et qui prend comme valeur la dernière
calculée (donc ici celle de i+j). Certes, dans ce cas d’école, le calcul préalable de a*b est
inutile puisqu’il n’intervient pas dans la valeur de l’expression globale et qu’il ne réalise
aucune action.
En revanche, une expression telle que :
i++, a + b
peut présenter un intérêt puisque la première expression (dont la valeur ne sera pas utilisée)
réalise en fait une incrémentation de la variable i.
Delannoy Livre.book Page 45 Mercredi, 6. mai 2009 4:26 16
Précédent

- 58/281

Suivant