Les expressions
Une expression est une combinaison de variables et d'opérateurs qui retourne une valeur lors de son évaluation.
On distingue 2 catégories d'opérateurs :
Les opérateurs unaires ,
Les opérateurs binaires.
Certains opérateurs sont unaires ou binaires selon les expressions (+x) et (5+x). L'évaluation d'une expression dépend de la priorité des opérateurs qu'elle contient.
** Les opérateurs unaires
Opérateur | Fonction | Exemple | Valeur |
---|---|---|---|
- | moins unaire : retourne l'opposé. | -5 | vaut -5 |
+ | plus unaire. | +5 | vaut +5 |
++ préfixé | incrémentation : retourne la valeur après incrémentation. | int n=0 ; m=++n ; | n vaut 1 et m vaut 1 |
++ postfixé | incrémentation : retourne la valeur avant incrémentation. | int n=0 ; m=n++ ; | n vaut +1 et m vaut 0 |
-- préfixé | décrémentation : retourne la valeur après décrémentation | int n=0 ; m=--n ; | n vaut -1 et m vaut -1 |
-- postfixé | décrémentation : retourne la valeur avant décrémentation. | int n=0 ; m=n-- ; | n vaut -1 et m vaut 0 |
~ | négation bit à bit | printf("%u",~7 ); | affiche 65528 |
! | négation logique | printf("n=%d,!n=%d,m=%d, !m=%d",n,!n,m,!m ; | affiche n=0, !n=1, m=1, !m=0 |
sizeof | retourne la taille de la variable ou du type passé en argument | printf("Taille de int=%d", sizeof(int)); | affiche Taille de int=4 (ou 2) |
* et & | indirection et adresse des pointeurs | voir chapitre pointeur | chapitre pointeur |
** Les opérateurs binaires
+, -, *, /, % | addition, soustraction, multiplication, division, modulo |
&, |, ^ | et, ou, ou exclusif arithmétique bit à bit |
&&, || | et, ou logique |
<, <=, >, >= | opérateurs de comparaison |
==, != | opérateur de comparaison (égal, différent) |
= | affectation |
>>, << | décalage vers la droite ou vers la gauche |
, | évaluation séquentielle |
** Priorité des opérateurs
Priorité (décroissante) | Opérateur | Signification |
13 | ( ) | modification de priorité |
12 | - + -- ++ ! ~ & sizeof | moins unaire (opposé) plus unaire décrémentation incrémentation négation logique complémentation binaire adresse taille |
11 | * / % | multiplication division modulo |
10 | + - | addition soustraction |
9 | << >> | décalage à gauche décalage à droite |
8 | < <= > >= | strictement inférieur inférieur ou égal strictement supérieur supérieur ou égal |
7 | == != | égal différent |
6 | & | et binaire |
5 | ^ | ou exclusif binaire |
4 | | | ou binaire |
3 | && | et logique |
2 | || | ou logique |
1 | = | affectation |
Exemple :
10+2 /* retourne la valeur 12 */
x*(3+y) /*combinaison de 2 opérations, la première (3+y) et la seconde avec l'opérateur * entre le résultat de la première opération et la variable x */