Chapitre 5 Opérateurs, expressions et conversions

Chapitre 5 : Op¨¦rateurs, expressions et conversion

41

Chapitre 5

Op¨¦rateurs, expressions et conversions

? Mohamed N. Lokbani

v1.01

Chapitre 5 : Op¨¦rateurs, expressions et conversion

POO avec C++

42

1. Expressions

- Une expression est la composition d¡¯op¨¦rateurs, de variables, de constantes, de fonctions et de

parenth¨¨ses.

- Une expression retourne toujours un r¨¦sultat, sa valeur.

- La valeur de l¡¯expression a un type et, elle peut-¨ºtre utilis¨¦e dans une autre expression

Dans cet exemple :

int x = 3 + sin(z) ;

Variable : Z

Constante : 3

Fonction : sin

Valeur de retour : x , type ? int ?

? Mohamed N. Lokbani

v1.01

POO avec C++

Chapitre 5 : Op¨¦rateurs, expressions et conversion

43

2. Op¨¦rateurs

- Le langage C++ est riche en op¨¦rateurs.

Priorit¨¦ et associativit¨¦ des op¨¦rateurs

Op¨¦rateur

Associativit¨¦

:: (port¨¦e globale)

:: (port¨¦e classe)

()

[]

->

.

(postfixe)++

(postfixe)-- sizeof typedef

++(pr¨¦fixe)

¨C-(prefixe) !

~

&(adresse)

+(unaire)

¨C(unaire)

*(indirection) delete new casts

.* ->*

* / %

+ >

< >=

== !=

&

^

|

&&

||

?:

= += -= *= /= %= >>= 2  i = -25

&

|

^

Op1

0

0

1

1

Op2

0

1

0

1

Commentaire

n¨¦gation bit ¨¤ bit. Il inverse un ¨¤ un tous les

bits de son unique op¨¦rande

d¨¦calage ¨¤ gauche de n rangs. Les bits sortants

sont perdus. Ils sont remplac¨¦s par des 0. Si la

variable est sign¨¦e, le bit de signe est

conserv¨¦. Multiplication par 2.

d¨¦calage ¨¤ droite de n rangs. Les bits sortants

sont perdus. Ils sont remplac¨¦s par des 0. Si la

variable est sign¨¦e, le bit de signe est

conserv¨¦. Division par 2.

ET bit ¨¤ bit entre les valeurs de 2 expressions

OU bit ¨¤ bit entre les valeurs de 2 expressions

OU exclusif bit ¨¤ bit entre les valeurs de 2

expressions

Op1&Op2

0

0

0

1

? Mohamed N. Lokbani

Op1|Op2

0

1

1

1

Op1^Op2

0

1

1

0

v1.01

POO avec C++

Chapitre 5 : Op¨¦rateurs, expressions et conversion

46

2.3 Op¨¦rateurs d¡¯incr¨¦ment et de d¨¦cr¨¦ment

- Les op¨¦rateurs d¡¯incr¨¦mentation ou d¨¦cr¨¦mentation sont plac¨¦s soit avant (pr¨¦) soit apr¨¨s (post) la

variable.

j

j

j

j

=

=

=

=

Incr¨¦ment et d¨¦cr¨¦ment

++i ;

i++ ;

--i ;

i-- ;

D¡¯abord

D¡¯abord

D¡¯abord

D¡¯abord

Expression ¨¦quivalente

i = i+1 ; puis j = i

j = i ; puis i = i+1

i = i-1 ; puis j = i

j = i ; puis i = i-1

;

;

;

;

- Pr¨¦ : L¡¯incr¨¦mentation/d¨¦cr¨¦mentation est effectu¨¦e puis la variable est utilis¨¦e.

- Post : L¡¯utilisation de la variable est effectu¨¦e avant l¡¯incr¨¦mentation/d¨¦cr¨¦mentation.

2.4 Op¨¦rateurs d¡¯affectation

- L¡¯¨¦l¨¦ment ¨¤ gauche du ? = ? se voit affecter la valeur retourn¨¦e par l¡¯expression de droite.

- Les conversions ¨¦ventuelles sont prises en consid¨¦ration lors de l¡¯affectation.

a = b = 0 ;

a = b + (c=3) ;  c=3 ; a = b + c ;

a op= b ;  a = a op b ; // Affectation combin¨¦e

a += 3 ; a = a + 3

op : * / % + - > & ^ |

? Mohamed N. Lokbani

v1.01

POO avec C++

Chapitre 5 : Op¨¦rateurs, expressions et conversion

47

2.5 Op¨¦rateurs relationnels et bool¨¦ens

- Le r¨¦sultat de la comparaison de deux expressions vaut :

 false (0) si le r¨¦sultat de la comparaison est FAUX.

 true (1) si le r¨¦sultat de la comparaison est VRAI.

Type

Relationnel

?galit¨¦

Logique

Op¨¦ration

Inf¨¦rieur que

Sup¨¦rieur que

Inf¨¦rieur que ou ¨¦gal

Sup¨¦rieur que ou ¨¦gal

?gal

Diff¨¦rent

N¨¦gation (unaire)

ET bool¨¦en

OU bool¨¦en

? Mohamed N. Lokbani

Symbole

<

>

=

==

!=

!

&&

||

v1.01

POO avec C++

Chapitre 5 : Op¨¦rateurs, expressions et conversion

48

- Une expression est vraie si elle est non nulle.

- Une expression est fausse si elle est ¨¦gale ¨¤ z¨¦ro.

D¨¦claration et initialisation

int a = -5, b=3, c=0 ;

Expression

Equivalence

Valeur

a + 5 && b

((a + 5) && b)

false ou 0

!(a < b) && c

(( !(a < b)) && c) false ou 0

1 || (a != 7)

(1 || (a != 7))

true ou 1

(( !(a < b)) && c)

(a faux

c = 0  c a une valeur nulle => faux

(( !(vrai)) && faux) => faux (false)

Op1

0

0

1

1

? Mohamed N. Lokbani

Op2

0

1

0

1

Op1&&Op2

0

0

0

1

v1.01

Op1||Op2

0

1

1

1

!Op1

1

0

0

1

POO avec C++

Chapitre 5 : Op¨¦rateurs, expressions et conversion

49

2.6 Op¨¦rateur de s¨¦quence

- L¡¯op¨¦rateur de s¨¦quence est repr¨¦sent¨¦ par le symbole ? , ?.

- Il est le moins prioritaire dans la table des op¨¦rateurs.

- Il permet d¡¯¨¦valuer les diff¨¦rentes op¨¦rations dans l¡¯ordre.

- Dans une liste d¡¯expressions s¨¦par¨¦es par ? , ?, chaque expression est ¨¦valu¨¦e en premier avant de passer

¨¤ la suivante qui se trouve ¨¤ sa droite.

a = (b=10 , b+20) ;

b=10 ; a=b+20=10+20=30 ;

x = 10, i=2, z=3 ;

? Mohamed N. Lokbani

v1.01

Chapitre 5 : Op¨¦rateurs, expressions et conversion

POO avec C++

50

2.7 Op¨¦rateur conditionnel

- Il est appel¨¦ aussi op¨¦rateur ternaire.

- Il prend comme op¨¦randes 3 expressions.

- La syntaxe de l¡¯op¨¦rateur conditionnel est comme suit :

(expression1) ? expression2 : expression3 ;

- ? expression1 ? est ¨¦valu¨¦e en premier.

- Si ? expression1 ? est vraie alors :

 ? expression2 ? est ¨¦valu¨¦e.

 Le r¨¦sultat est celui fourni par ? expression2 ?

- Si ? expression1 ? est fausse alors :

 ? expression3 ? est ¨¦valu¨¦e.

 Le r¨¦sultat est fourni par ? expression3 ?.

int a = -3 ;

int n = (a < 0) ? -a : a ;

a = -3 < 0 ?

vrai => n = -a = 3 ;

Dans cet exemple, n est ¨¦gale ¨¤ la valeur absolue de a.

? Mohamed N. Lokbani

v1.01

POO avec C++

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download