4.3. L'opérateur d'affectation = (« reçoit »)

Icône de l'outil pédagogique L'opérateur d'affectation = (« reçoit »)

L’affectation permet de « ranger » une valeur dans un emplacement mémoire (en général une variable) appelée Leftvalue.

Mais l’affectation n’est pas seulement un traitement à effectuer : c’est aussi une expression qui prend comme valeur la valeur affectée. Cela permet d’utiliser l’affectation comme opérande d’une autre expression. En voici deux exemples :

min = max = 0 ;
if ( (val=getchar()) ==‘q’ ) ... /* ici les parenthèses sont indispensables */

Pour comprendre ce qui se passe, commençons par deux cas simples.

L’instruction nombre=4 est une expression qui :

– place la valeur 4 dans la variable nombre : c'est l'affectation de nombre ;
– prend elle‐même la valeur 4.

De même, l'écriture max=5*2+3 est une expression qui :

– évalue l'expression à droite (13) et donne à la variable max la valeur 13 ;
– prend elle‐même la valeur 13 ;
– L'expression max=5*2+3 peut alors se placer à droite d'une autre affectation. Par exemple, on peut écrire : min=max=5*2+3 → les variables min et max auront toutes deux la valeur 13.

Remarquons que pour une fois, l'associativité se fait de la droite vers la gauche. Ainsi lorsqu'on écrit a=b=c=0, l'expression la plus à droite est évaluée (elle vaut 0), puis sa valeur est affectée à la variable c ; en même temps, l'expression (c=0) prend la valeur 0, qui est ensuite affectée à la variable b ; l'expression (b=c=0) prend alors la valeur 0, etc ...

A gauche de l'opérateur d'affectation = ne peut se trouver qu'une variable ("LeftValue").

On peut ainsi comprendre l’exemple if((val=getchar())==‘q’ ) ... L’expression val=getchar() prend comme valeur la valeur du caractère saisi au clavier par la fonction getchar (valeur aussi rangée dans val) et peut donc être comparée au caractère ‘q’.