En mathématiques, le signe égal (=
) est un symbole qui représente l'égalité entre deux parties. En
informatique, l'opérateur égal a une signification différente : l'affectation. C'est-à-dire
que la partie droite de l'opérateur sera affectée à la partie gauche qui est nécessairement une variable.
x = a + b;
Dans l'exemple ci-dessus, le résultat du calcul a + b
sera affecté dans la variable x
. Pour clarifier
ce concept d'affectation, étudions l'équation mathématique \( a = a + 1 \) et l'instruction informatique a = a + 1;
.
Dans le cas d'une équation mathématique, il s'agit d'une relation qui peut se simplifier :
$$ \begin{align} a &= a+1 \\ \cancel{a} &= \cancel{a}+1 \\ 0 &= 1 \end{align} $$
Cette relation est toujours fausse puisque 0 ≠ 1.
En C, l'instruction a = a + 1;
signifie que la nouvelle valeur de la variable a
vaudra l'ancienne plus un. On représenterait cette relation sous la forme
mathématique suivante :
$$ a_{n+1} = a_n + 1 $$
En C, on utilise fréquemment des instructions du type i = i + 2;
où la variable
qui se voit assignée la valeur finale est aussi utilisée dans le calcul. Il existe une
notation courte i += 2
qui est équivalente à i = i + 2;
.
On introduit ici un nouvel opérateur d'affectation +=
qui fait la somme des
deux opérandes avant d'assigner le résultat à l'opérande de gauche. Voici un exemple :
int x = 3;
// Ici x vaut 3
x += 7;
// Maintenant x vaut 10 (3+7)
Ces opérateurs combinés permettent de simplifier des opérations telles qu'ajouter une valeur dans une variable et y stocker le résultat. Voici la liste des opérateurs d'affectation avec leur instruction équivalente :
Opérateur | Exemple | Équivalent |
---|---|---|
+= |
a += b; |
a = a + b; |
-= |
a -= b; |
a = a - b; |
*= |
a *= b; |
a = a * b; |
/= |
a /= b; |
a = a / b; |
%= |
a %= b; |
a = a % b; |
&= |
a &= b; |
a = a & b; |
|= |
a |= b; |
a = a | b; |
^= |
a ^= b; |
a = a ^ b; |
<<= |
a <<= b; |
a = a << b; |
>>= |
a >>= b; |
a = a >> b; |
Considérons l'exemple suivant :
int a = 18;
// Opérateur combiné avec la division
a /= 3;
printf ("a = %d\n", a );
Dans le code suivant, modifier chaque opération en utilisant les opérateurs combinés :
int x1=4, x2=2, x3=6;
// UTILISER LES OPERATEURS COMBINES (+=, -=, *= ...)
x1 = 2 + x1;
x1 = x1 * x2;
x2 = x2 % (1+x1);
x3 = x3 / x2;
// Affiche les résultats
printf ("x1= %d\n", x1);
printf ("x2= %d\n", x2);
printf ("x3= %d\n", x3);
Le résultat doit évidemment être identique :
x1 = 12
x2 = 2
x3 = 3
Qu'affiche le programme suivant ?
int x=3;
x += 2;
printf ("%d", x );
x = x +2;
.
Essaie encore ...
Qu'affiche le programme suivant ?
float x=10.0;
x /= 3.0;
printf ("%f", x );
x = x / 3.0;
Essaie encore ...
Quelle est l'instruction équivalente avec un opérateur combiné ?
x = 12 % x;
%
, sinon ce n'est pas possible (comme ici).
Essaie encore ...
Quelle est l'instruction équivalente avec un opérateur combiné ?
x = x % 12;
x
est à gauche de l'opérateur %
.
Essaie encore ...