Opérateurs d'affectation
En pratique, nous retrouvons souvent des affectations comme:
i = i + 2
En C, nous utiliserons plutôt la formulation plus compacte:
i += 2
L'opérateur += est un opérateur d'affectation.
Pour la plupart des expressions de la forme:
expr1 = (expr1) op (expr2)
il existe une formulation équivalente qui utilise un opérateur d'affectation:
expr1 op= expr2
Opérateurs d'affectation
+= |
ajouter à |
-= |
diminuer de |
*= |
multiplier par |
/= |
diviser par |
%= |
modulo |
Avantages
La formulation avec un opérateur d'affectation est souvent plus près de la logique humaine:
Un homme dirait <<Ajoute 2 à I>>
plutôt que <<Ajoute 2 à I et écris le résultat dans I>>
Les opérateurs d'affectation peuvent aider le compilateur à générer un code plus efficient parce que expr1 n'est évalué qu'une seule fois.
Les opérateurs d'affectation deviennent le plus intéressant si expr1 est une expression complexe. Ceci peut être le cas si nous calculons avec des tableaux. L'expression:
Element[n*i+j] = Element[n*i+j] * x[j]
peut être formulée de manière plus efficiente et plus claire:
Element[n*i+j] *= x[j]
Les affectations les plus fréquentes sont du type:
I = I + 1 et I = I - 1
En C, nous disposons de deux opérateurs inhabituels pour ces affectations:
I++ ou ++I |
pour l'incrémentation |
(augmentation d'une unité) |
I-- ou --I |
pour la décrémentation |
(diminution d'une unité) |
Les opérateurs ++ et -- sont employés dans les cas suivants:
incrémenter/décrémenter une variable (p.ex: dans une boucle). Dans ce cas il n'y a pas de différence entre la notation préfixe (++I --I) et la notation postfixe (I++ I--).
incrémenter/décrémenter une variable et en même
temps affecter sa valeur à une autre variable. Dans ce cas, nous devons
choisir entre la notation préfixe et postfixe:
X = I++ |
passe d'abord la valeur de I à X et incrémenteaprès |
|
X = I-- |
passe d'abord la valeur de I à X et décrémente après |
|
X = ++I |
incrémente d'abord et passe la valeur incrémentée à X |
|
X = --I |
décrémente d'abord et passe la valeur décrémentée à X |
Exemple Supposons que la valeur de N est égal à 5:
Incrém. postfixe: |
X = N++; |
Résultat: N=6 et X=5 |
|
Incrém. préfixe: |
X = ++N; |
Résultat: N=6 et X=6 |