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 */