Vous êtes sur la page 1sur 6

Chapitre 3 Les opérateurs du langage C

I. Les opérateurs
Ce sont eux qui régissent toutes les opérations ou transformations sur les valeurs de variables.

I.1. L’opérateur d’affectation


C'est l'opérateur le plus utilisé. Il permet de modifier la valeur d'une variable. L’affectation est
toujours effectuée de la droite vers la gauche. En effet le programme commence par évaluer la
valeur de l'expression puis l'affecte avec le signe = à la variable par son identificateur.

Syntaxe :
variable = expression ;

Remarque :
1/ Il ne faut pas confondre = et = =. Le compilateur ne peut pas remarquer une erreur
(contrairement au Pascal ou Fortran) car les deux sont possibles. Exemple : if (a=0) est
toujours faux car quelle que soit la valeur initiale de a, on l'écrase par la valeur 0, le résultat
de l'opération vaut 0 et est donc interprété par IF comme faux.

2/ L'affectation effectue une conversion de type implicite : la valeur de l'expression (terme de


droite) est convertie dans le type du terme de gauche.

I.2. Les opérateurs arithmétiques


Les opérateurs arithmétiques classiques sont les suivants :
 l’opérateur unaire - (changement de signe).
 les opérateurs binaires :
 + addition
 soustraction
 multiplication
 / division
 % reste de la division (modulo) (pour les entiers)
Ces opérateurs agissent de la façon attendue sur les entiers comme sur les flottants. Leurs
seules spécificités sont les suivantes :
 Contrairement à d'autres langages, le C ne dispose que de la notation / pour désigner à la
fois la division entière et la division réelle (l’opérateur div n’existe pas comme en
pascal).
o Si les deux opérandes sont de type entier, l'opérateur / produira une division
entière (quotient de la division).
o Par contre, il délivrera une valeur flottante dès que l’un des opérandes est un
flottant.
Exemple:

float x;
x = 3 / 2;
affecte à x la valeur 1. Par contre
x = 3 / 2.0;
/* affecte à x la valeur 1.5. */
 L'opérateur % ne s'applique qu’à des opérandes de type entier.
 Notons enfin qu’il n'y a pas en C d’opérateur effectuant l’élévation à la puissance. De
façon générale, il faut utiliser la fonction pow(x,y) de la librairie math.h pour calculer
xy .

I.3 Les opérateurs relationnels


Les opérateurs de comparaison sont les suivants :

Leur syntaxe est : expression1 op expression2


Les deux expressions sont évaluées puis comparées. La valeur rendue est de type int; elle vaut
0 si la condition est faux, et une valeur différente de 0 sinon. Il n'y a pas de type booléen en
C.
FAUX  = 0

VRAI  ≠ 0

Attention !!!! à ne pas confondre l'opérateur de test d’égalité == avec l’opérateur d’affection
=. Ainsi, le programme
main()
{
int a = 0, b=1,c;
c= (a==b) ;
}
c contient la valeur 0 car a est différent b donc l’évaluation de l’expression (a = = b) donne la
valeur booléenne Faux qui correspond à la valeur 0 en C.
I.4. Les opérateurs logiques booléens
Ils sont utilisés exactement comme les opérateurs relationnels.

Comme pour les opérateurs de comparaison, la valeur retournée par ces opérateurs est un int
qui vaut 0 si la condition est faux.
Dans une expression de type : expression1 op1 expression2 op2 ...expressionN , l’évaluation
se fait de gauche à droite et s'arrête dès que le résultat final est déterminé. Par exemple dans
int i=18,j=0;
if ((i >= 0) && (i <= 9) && !(j == 0))
La dernière expression « !(j == 0) » ne sera pas évaluée si i n'est pas entre 0 et 9.

I.5. Les opérateurs d'affectation composée


Ils réalisent une opération avec une variable et affectent le résultat à cette même variable. Ils
sont constitués d'un opérateur arithmétique ou binaire, avec l'opérateur d'affectation.
Exemple :

Résultat :

I.6.Les opérateurs d'incrémentation et de décrémentation

 Si l'opérateur d'incrémentation ou de décrémentation est placé avant l'identificateur


alors la variable sera incrémentée ou décrémentée avant d'être utilisée.
Exemple :

Résultat :

 Si l'opérateur d'incrémentation ou de décrémentation est placé après l'identificateur


alors la variable sera incrémentée ou décrémentée après avoir été utilisée.
Exemple :

Résultat :

I.7. L'opérateur virgule


Une expression peut être constituée d'une suite d'expressions séparées par des virgules :
expression1, expression2, ..., expressionN

Cette expression est alors évaluée de gauche à droite. Sa valeur sera la valeur de l'expression
de droite. Par exemple, le programme
main()
{
int a, b;
b = ((a = 3), (a + 2)); //  a=3 ; b=a+2 ;
printf(''\n b = %d \n'',b);
}
 La valeur de b est 5

 La virgule séparant les arguments d'une fonction ou les déclarations de variables ne


représente pas l'opérateur virgule.

I.8.L'opérateur adresse
L'opérateur d'adresse & appliqué à une variable retourne l'adresse mémoire de cette variable.
La syntaxe est &objet.
Exemple :

Main()
{
int i=5 ;
printf("l’adresse mémoire de i est : %x ",&i) ;
}
Affiche sur l’écran l’adresse mémoire de i sous forme hexadécimale : exemple FFF4

I.9.Règles de priorité des opérateurs


Le tableau suivant classe les opérateurs par ordres de priorité décroissants. Les opérateurs
placés sur une même ligne ont même priorité.