Programmer en langage C
26
© Éditions Eyrolles
Mais, généralement, dans les langages autres que C, l’expression possède une valeur mais ne
réalise aucune action, en particulier aucune affectation d’une valeur à une variable. Au contraire,
l’affectation y réalise une affectation d’une valeur à une variable mais ne possède pas de valeur.
On a affaire à deux notions parfaitement disjointes. En langage C, il en va différemment
puisque :
●
d’une part, les (nouveaux) opérateurs d’incrémentation pourront non seulement intervenir
au sein d’une expression (laquelle, au bout du compte, possédera une valeur), mais également agir sur le contenu de variables. Ainsi, l’expression (car, comme nous le verrons, il
s’agit bien d’une expression en C) :
++i
réalisera une action, à savoir : augmenter la valeur i de 1 ; en même temps, elle aura une
valeur, à savoir celle de i après incrémentation.
●
d’autre part, une affectation apparemment classique telle que :
i = 5
pourra, à son tour, être considérée comme une expression (ici, de valeur 5). D’ailleurs, en
C, l’affectation (=) est un opérateur. Par exemple, la notation suivante :
k = i = 5
représente une expression en C (ce n’est pas encore une instruction - nous y reviendrons).
Elle sera interprétée comme :
k = (i = 5)
Autrement dit, elle affectera à i la valeur 5 puis elle affectera à k la valeur de l’expression
i = 5, c’est-à-dire 5.
En fait, en C, les notions d’expression et d’instruction sont étroitement liées puisque la
principale instruction de ce langage est une expression terminée par un point-virgule. On
la nomme souvent « instruction expression ». Voici des exemples de telles instructions qui
reprennent les expressions évoquées ci-dessus :
++i ;
i = 5 ;
k = i = 5 ;
Les deux premières ont l’allure d’une affectation telle qu’on la rencontre classiquement dans
la plupart des autres langages. Notez que, dans les deux cas, il y a évaluation d’une expression
(++i ou i=5) dont la valeur est finalement inutilisée. Dans le dernier cas, la valeur de
l’expression i=5, c’est-à-dire 5, est à son tour affectée à k ; par contre, la valeur finale
de l’expression complète est, là encore, inutilisée.
Ce chapitre vous présente la plupart des opérateurs du C ainsi que les règles de priorité et de
conversion de type qui interviennent dans les évaluations des expressions. Les (quelques)
autres opérateurs concernent essentiellement les pointeurs, l’accès aux tableaux et aux structures
et les manipulations de bits. Ils seront exposés dans la suite de cet ouvrage.
Delannoy Livre.book Page 26 Mercredi, 6. mai 2009 4:26 16
26
© Éditions Eyrolles
Mais, généralement, dans les langages autres que C, l’expression possède une valeur mais ne
réalise aucune action, en particulier aucune affectation d’une valeur à une variable. Au contraire,
l’affectation y réalise une affectation d’une valeur à une variable mais ne possède pas de valeur.
On a affaire à deux notions parfaitement disjointes. En langage C, il en va différemment
puisque :
●
d’une part, les (nouveaux) opérateurs d’incrémentation pourront non seulement intervenir
au sein d’une expression (laquelle, au bout du compte, possédera une valeur), mais également agir sur le contenu de variables. Ainsi, l’expression (car, comme nous le verrons, il
s’agit bien d’une expression en C) :
++i
réalisera une action, à savoir : augmenter la valeur i de 1 ; en même temps, elle aura une
valeur, à savoir celle de i après incrémentation.
●
d’autre part, une affectation apparemment classique telle que :
i = 5
pourra, à son tour, être considérée comme une expression (ici, de valeur 5). D’ailleurs, en
C, l’affectation (=) est un opérateur. Par exemple, la notation suivante :
k = i = 5
représente une expression en C (ce n’est pas encore une instruction - nous y reviendrons).
Elle sera interprétée comme :
k = (i = 5)
Autrement dit, elle affectera à i la valeur 5 puis elle affectera à k la valeur de l’expression
i = 5, c’est-à-dire 5.
En fait, en C, les notions d’expression et d’instruction sont étroitement liées puisque la
principale instruction de ce langage est une expression terminée par un point-virgule. On
la nomme souvent « instruction expression ». Voici des exemples de telles instructions qui
reprennent les expressions évoquées ci-dessus :
++i ;
i = 5 ;
k = i = 5 ;
Les deux premières ont l’allure d’une affectation telle qu’on la rencontre classiquement dans
la plupart des autres langages. Notez que, dans les deux cas, il y a évaluation d’une expression
(++i ou i=5) dont la valeur est finalement inutilisée. Dans le dernier cas, la valeur de
l’expression i=5, c’est-à-dire 5, est à son tour affectée à k ; par contre, la valeur finale
de l’expression complète est, là encore, inutilisée.
Ce chapitre vous présente la plupart des opérateurs du C ainsi que les règles de priorité et de
conversion de type qui interviennent dans les évaluations des expressions. Les (quelques)
autres opérateurs concernent essentiellement les pointeurs, l’accès aux tableaux et aux structures
et les manipulations de bits. Ils seront exposés dans la suite de cet ouvrage.
Delannoy Livre.book Page 26 Mercredi, 6. mai 2009 4:26 16
