© Éditions Eyrolles
27
chapitre n° 3
Les opérateurs et les expressions en langage C
2 Les opérateurs arithmétiques en C
2.1 Présentation des opérateurs
Comme tous les langages, C dispose d’opérateurs classiques « binaires » (c’est-à-dire portant
sur deux « opérandes »), à savoir l’addition (+), la soustraction (-), la multiplication (*) et la
division (/), ainsi que d’un opérateur « unaire » (c’est-à-dire ne portant que sur un seul opérande)
correspondant à l’opposé noté - (comme dans -n ou dans -x+y).
Les opérateurs binaires ne sont a priori définis que pour deux opérandes ayant le même type
parmi : int, long int, float, double, long double et ils fournissent un résultat de
même type que leurs opérandes.
En machine, il n’existe, par exemple, que des additions de deux entiers de même taille ou de
flottants de même taille. Il n’existe pas d’addition d’un entier et d’un flottant ou de deux flottants
de taille différente.
Mais nous verrons, dans le paragraphe 2, que, par le jeu des conversions implicites, le compilateur saura leur donner une signification :
●
soit lorsqu’ils porteront sur des opérateurs de type différent,
●
soit lorsqu’ils porteront sur des opérandes de type char ou short.
De plus, il existe un opérateur de modulo noté % qui ne peut porter que sur des entiers et qui
fournit le reste de la division de son premier opérande par son second. Par exemple, 11%4 vaut
3, 23%6 vaut 5.
La norme ANSI ne définit les opérateurs % et / que pour des valeurs positives de leurs deux opérandes. Dans les autres cas, le résultat dépend de l’implémentation (C99 lève cette ambiguïté).
Notez bien qu’en C le quotient de deux entiers fournit un entier. Ainsi, 5/2 vaut 2 ; en revanche, le quotient de deux flottants (noté, lui aussi, /) est bien un flottant (5.0/2.0 vaut bien
approximativement 2.5).
Il n’existe pas d’opérateur d’élévation à la puissance. Il est nécessaire de faire appel soit à des
produits successifs pour des puissances entières pas trop grandes (par exemple, on calculera
x 3 comme x*x*x), soit à la fonction power de la bibliothèque standard (voyez éventuellement
l’annexe).
2.2 Les priorités relatives des opérateurs
Lorsque plusieurs opérateurs apparaissent dans une même expression, il est nécessaire de
savoir dans quel ordre ils sont mis en jeu. En C, comme dans les autres langages, les règles
sont naturelles et rejoignent celles de l’algèbre traditionnelle (du moins, en ce qui concerne les
opérateurs arithmétiques dont nous parlons ici).
Delannoy Livre.book Page 27 Mercredi, 6. mai 2009 4:26 16
Précédent

- 40/281

Suivant