Programmer en langage C
46
© Éditions Eyrolles
Il en est de même de l’expression suivante :
i++, j = i + k
dans laquelle, il y a :
●
évaluation de l’expression i++,
●
évaluation de l’affectation j = i + k. Notez qu’alors on utilise la valeur de i après incrémentation par l’expression précédente.
Cet opérateur séquentiel, qui dispose d’une associativité de gauche à droite, peut facilement
faire intervenir plusieurs expressions (sa faible priorité évite l’usage de parenthèses) :
i++, j = i+k, j-Certes, un tel opérateur peut être utilisé pour réunir plusieurs instructions en une seule. Ainsi,
par exemple, ces deux formulations sont équivalentes :
i++, j = i+k, j-- ;
i++ ; j = i+k ; j-- ;
Dans la pratique, ce n’est cependant pas là le principal usage que l’on fera de cet opérateur
séquentiel. En revanche, ce dernier pourra fréquemment intervenir dans les instructions de
choix ou dans les boucles ; là où celles-ci s’attendent à trouver une seule expression, l’opérateur séquentiel permettra d’en placer plusieurs, et donc d’y réaliser plusieurs calculs ou
plusieurs actions. En voici deux exemples :
if (i++, k>0) ......
remplace :
i++ ; if (k>0) ......
et :
for (i=1, k=0 ; ... ; ... ) .......
remplace :
i=1 ; for (k=0 ; ... ; ... ) ......
Compte tenu de ce que l’appel d’une fonction n’est en fait rien d’autre qu’une expression, la
construction suivante est parfaitement valide en C :
for (i=1, k=0, printf("on commence") ; ... ; ...) ......
Nous verrons même que, dans le cas des boucles conditionnelles, cet opérateur permet de réaliser
des constructions ne possédant pas d’équivalent simple.
Delannoy Livre.book Page 46 Mercredi, 6. mai 2009 4:26 16
46
© Éditions Eyrolles
Il en est de même de l’expression suivante :
i++, j = i + k
dans laquelle, il y a :
●
évaluation de l’expression i++,
●
évaluation de l’affectation j = i + k. Notez qu’alors on utilise la valeur de i après incrémentation par l’expression précédente.
Cet opérateur séquentiel, qui dispose d’une associativité de gauche à droite, peut facilement
faire intervenir plusieurs expressions (sa faible priorité évite l’usage de parenthèses) :
i++, j = i+k, j-Certes, un tel opérateur peut être utilisé pour réunir plusieurs instructions en une seule. Ainsi,
par exemple, ces deux formulations sont équivalentes :
i++, j = i+k, j-- ;
i++ ; j = i+k ; j-- ;
Dans la pratique, ce n’est cependant pas là le principal usage que l’on fera de cet opérateur
séquentiel. En revanche, ce dernier pourra fréquemment intervenir dans les instructions de
choix ou dans les boucles ; là où celles-ci s’attendent à trouver une seule expression, l’opérateur séquentiel permettra d’en placer plusieurs, et donc d’y réaliser plusieurs calculs ou
plusieurs actions. En voici deux exemples :
if (i++, k>0) ......
remplace :
i++ ; if (k>0) ......
et :
for (i=1, k=0 ; ... ; ... ) .......
remplace :
i=1 ; for (k=0 ; ... ; ... ) ......
Compte tenu de ce que l’appel d’une fonction n’est en fait rien d’autre qu’une expression, la
construction suivante est parfaitement valide en C :
for (i=1, k=0, printf("on commence") ; ... ; ...) ......
Nous verrons même que, dans le cas des boucles conditionnelles, cet opérateur permet de réaliser
des constructions ne possédant pas d’équivalent simple.
Delannoy Livre.book Page 46 Mercredi, 6. mai 2009 4:26 16
