# Introduction au langage C/Opérateurs
## Introduction

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.

## Variables et opérations

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
### Opérateurs d'arithmétiques

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

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

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++ ;
    La valeur de i est utilisée par printf avant d’être incrémentée
* Pré incrémentation :
    ++var1 ;
La valeur de i est incrémentée ensuite elle est utilisée par printf
Dans une opération arithmétique (déconseillé)
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

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… )

#### Décalage

à droite
à gauche

### Opérateurs de comparaison

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

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 |

## Priorité des opérateurs

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 | = += -= *= /= %= |

## TP

| Types | Structures conditionnelles |