Aller au contenu

Introduction au langage C/Opérateurs

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Opérateurs
Icône de la faculté
Chapitre no 6
Leçon : Introduction au langage C
Chap. préc. :Types
Chap. suiv. :Structures conditionnelles
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Introduction au langage C : Opérateurs
Introduction au langage C/Opérateurs
 », n'a pu être restituée correctement ci-dessus.

Les opérateurs sont des signes servant à calculer avec les variables.
Les six opérateurs les plus importants sont :

Signe Nom Exemple
+ addition int a = 4 + 10 //a vaut 14
- soustraction int a = 9 - 6 //a vaut 3
* multiplication int a = 8 * 9 //a vaut 72
/ division int a = 9 / 3 //a vaut 3
% modulo (reste de la divison entiere) int a = 15 % 9 //a vaut 6
= affectation var1 = 3

Les opérateurs possèdent des priorités à ne pas négliger. Pour éviter les erreurs, ne pas hésiter à préciser l’ordre des opérations par des parenthèses.

Plus de précisions sur les opérateurs dans le WikiLivre Programmation C, chapitre Opérateurs.

Variables et opérations

[modifier | modifier le wikicode]

Bien sûr, les opérations s'utilisent avec les variables.
Ainsi l’expression a opérateur b (où a et b sont deux variables ou constantes) renvoie une valeur résultat qui peut être récupérée et stockée dans une variable à l'aide de l'opérateur d'affection c = a.

Description des opérateurs

[modifier | modifier le wikicode]

Opérateurs d'arithmétiques

[modifier | modifier le wikicode]

Les opérateurs arithmétiques sont (+, -, *, /, %). Comme l'exemple en haut, ils effectuent une opération avec les deux variables. Le résultat est normalement utilisé avec un autre opérateur comme l'opérateur affectation (=) ou les opérateurs d'accumulation.

Opérateurs d'accumulation

[modifier | modifier le wikicode]

Les opérateurs d'accumulation sont des opérateurs qui ajoutent une valeur à la variable.
Par exemple, ma variable var1 vaut 10. Je veux lui ajouter 5. Je peux écrire var1 = var1 + 5 ou var1 += 5. Cette expression est très souvent utilisée dans les boucles.

Voici un tableau des différents opérateurs d'accumulation :

Opérateur Description Exemple (int i vaut 10)
+= addition i += 23 /* i vaut 33 */
-= soustraction i -= 5 /*i vaut 5 */
*= multiplication i *= 10 /* i vaut 100 */
/= division i /= 2 /* i vaut 5 */
%= modulo i %= 6 /* i vaut 4 */

Attention : cette notation peut gêner les programmeurs habitués à d'autres langages.

Conseil de codage à respecter : c_lis_15

Incrémentation

[modifier | modifier le wikicode]

L'incrémentation est une autre forme d'accumulation :
Elle ajoute 1 à un nombre. cela reviendrait a écrire :

  • var1 = var1 + 1 ;
  • var1 += 1 ;

La syntaxe est donc plus courte à écrire. Il existe deux types d'incrémentations

  • Post incrémentation :
var1++ ;
int i= 0;
(void)printf("%d",i++); // affiche 0
(void)printf("%d",i); // affiche 1
La valeur de i est utilisée par printf avant d’être incrémentée
  • Pré incrémentation :
++var1 ;
int i= 0;
(void)printf("%d",++i); // affiche 1
(void)printf("%d",i); // affiche 1

La valeur de i est incrémentée ensuite elle est utilisée par printf

Dans une opération arithmétique (déconseillé)

int i= 0, temp;
temp = 10 + i++; // Le programme ajoute la valeur de i a 10 et l'incrémente ensuite 
(void)printf("%d", temp); // affiche 10
(void)printf("%d",i); // affiche 1

On peut aussi décrémenter (diminuer de 1) de la même manière :

  • var1--
  • --var1

Attention :

  • Cette syntaxe est difficile à comprendre et il vaut mieux l'éviter dans les expressions numériques.
  • Se limiter aux expressions var1++; ou var1--;

Les opérateurs binaires

[modifier | modifier le wikicode]

Les opérateurs binaires sont utilisés pour manipuler les bits de valeurs entières. Lorsque vous utilisez ces opérateurs pour une variable numérique, vous travaillez bit à bit au lieu de travailler sur la valeur numérique complète. Voir Algèbre de Boole.

Opérateur Rôle
& et binaire bit à bit
| ou binaire bit à bit
^ ou exclusif bit à bit
~ Complément à un
<< Décalage de n bits vers la gauche
>> Décalage de n bits vers la droite


Remarque : Pour faciliter la compréhension on utilise un octet représenté directement en binaire. Les constantes binaires n'existent pas en C. Pour représenter des nombres binaires dans un programme, on utilisera des constantes hexadécimales ( Exemple : 0xFF, 0xFA2B, 0xBAFE, 0xCAFE… )

1010 1101 & 1111 1110 (renvoie :) 1010 1100 
1010 1100 | 0000 0001 (renvoie :) 1010 1101 

ou exclusif bit à bit

[modifier | modifier le wikicode]
1010 1101 ^ 0000 0001 (renvoie :) 1010 1100 

Complément à un

[modifier | modifier le wikicode]
~1010 1101 (renvoie :) 0101 0010 

à droite

 1010 1101 >> 1 (renvoie :) 0101 0110 
 1010 1101 >> 2 (renvoie :) 0010 1011 
 1010 1101 >> 3 (renvoie :) 0001 0101 

à gauche

 1010 1101 << 1 (renvoie :) 0101 1010
 1010 1101 << 2 (renvoie :) 1011 0100
 1010 1101 << 3 (renvoie :) 0110 1000 

Opérateurs de comparaison

[modifier | modifier le wikicode]

Ces opérateurs servent à comparer des valeurs, et ont pour résultat un booléen.

Opérateur Rôle
== égalité
< infériorité
<= infériorité ou égalité
> supériorité
>= supériorité ou égalité
!= différence

Opérateurs booléens

[modifier | modifier le wikicode]

Les opérateurs booléens, aussi appelés opérateurs logiques, permettent d'écrire des conditions composées de plusieurs éléments logiques.

Opérateur Rôle
&& ET logique
|| OU logique
! Négation logique
age >= 18 && taille > 160 : vaut vrai si age est supérieur ou égale à 18 et si taille est supérieur à 160, sinon vaut faux.

Priorité des opérateurs

[modifier | modifier le wikicode]

Certains opérateurs sont prioritaires par rapport aux autres. Voici la liste des opérateurs par ordre décroissant de priorité.

Priorité Opérateur
1 La plus forte ()
2 ! ++ --
3 * / %
4 + -
5 < <= > >=
6 == !=
7 &&
8 ||
9 La plus faible = += -= *= /= %=
Faîtes les exercices du WikiLivre sur les opérateurs.