Priorité des opérateurs et d'associativité
Le langage C++ inclut tous les opérateurs C et ajoute plusieurs nouveaux opérateurs.Les opérateurs spécifient une évaluation à effectuer sur une des opérations suivantes :
un opérande (opérateur unaire)
deux opérandes (opérateur binaire)
Trois opérandes (opérateur conditionnel ternaire)
Les opérateurs suivent une priorité identité, qui définit l'ordre d'évaluation des expressions qui contient ces opérateurs.Les opérateurs s'associent à l'expression sur leur gauche ou l'expression sur leur droite ; cela est appelé « associativité ». Le tableau suivant indique la priorité et l'associativité des opérateurs C++ (de la plus élevée à la plus faible priorité).Les opérateurs dans le même segment du tableau sont prioritaires égale et sont évalués dans l'ordre donné dans une expression à moins qu'explicitement converti parenthèses.
Priorité des opérateurs C++ et d'associativité
Opérateur |
nom ou signification |
Associativité |
---|---|---|
:: |
Résolution de portée |
Aucun |
|
|
|
. |
Sélection de membre (objet) |
De gauche à droite |
–> |
Sélection de membre (pointeur) |
De gauche à droite |
[ ] |
indice de tableau |
De gauche à droite |
( ) |
initialisation de membre d'appel de fonction |
De gauche à droite |
++ |
Post-incrémentation |
De gauche à droite |
–– |
Post-décrémentation |
De gauche à droite |
typeid( ) |
nom de type |
De gauche à droite |
const_cast |
cast de type (conversion) |
De gauche à droite |
dynamic_cast |
cast de type (conversion) |
De gauche à droite |
reinterpret_cast |
cast de type (conversion) |
De gauche à droite |
static_cast |
cast de type (conversion) |
De gauche à droite |
|
|
|
sizeof |
taille d'objet ou de type |
De droite à gauche |
++ |
Pré-incrémentation |
De droite à gauche |
–– |
Pré-décrémentation |
De droite à gauche |
~ |
Complément à 1 |
De droite à gauche |
! |
NOT logique |
De droite à gauche |
– |
Le moins unaire |
De droite à gauche |
+ |
unaire plus |
De droite à gauche |
& |
adresse |
De droite à gauche |
* |
Adressage indirect |
De droite à gauche |
new |
créez l'objet |
De droite à gauche |
delete |
Supprimez l'objet |
De droite à gauche |
( ) |
Cast |
De droite à gauche |
|
|
|
.* |
pointeur vers membre (objets) |
De gauche à droite |
–>* |
pointeur vers membre (pointeurs) |
De gauche à droite |
|
|
|
* |
Multiplication |
De gauche à droite |
/ |
Division |
De gauche à droite |
% |
Modulo |
De gauche à droite |
|
|
|
+ |
Addition |
De gauche à droite |
– |
Soustraction |
De gauche à droite |
|
|
|
<< |
Décalage vers la gauche |
De gauche à droite |
>> |
Décalage vers la droite |
De gauche à droite |
|
|
|
< |
Inférieur à |
De gauche à droite |
> |
Supérieur à |
De gauche à droite |
<= |
Inférieur ou égal à |
De gauche à droite |
>= |
Supérieur ou égal à |
De gauche à droite |
|
|
|
== |
Égalité |
De gauche à droite |
!= |
Inégalité |
De gauche à droite |
|
|
|
& |
Opération de bits AND |
De gauche à droite |
|
|
|
^ |
Opération OR exclusive au niveau du bit |
De gauche à droite |
|
|
|
| |
Opération OR inclusive au niveau du bit |
De gauche à droite |
|
|
|
&& |
AND logique |
De gauche à droite |
|
|
|
|| |
OR logique |
De gauche à droite |
|
|
|
expr1 ? expr2 : expr3 |
Conditionnel |
De droite à gauche |
|
|
|
= |
Assignation |
De droite à gauche |
*= |
Assignation de multiplication |
De droite à gauche |
/= |
Assignation de Division |
De droite à gauche |
%= |
Assignation de modulo |
De droite à gauche |
+= |
Assignation d'addition |
De droite à gauche |
–= |
Assignation de soustraction |
De droite à gauche |
<<= |
Assignation de décalage vers la gauche |
De droite à gauche |
>>= |
Assignation de décalage vers la droite |
De droite à gauche |
&= |
Opération de bits AND peut-être |
De droite à gauche |
|= |
Inclusifs de bits OR peut-être |
De droite à gauche |
^= |
Opération de bits OR exclusive peut-être |
De droite à gauche |
|
|
|
throwexpr |
expression throw |
De droite à gauche |
|
|
|
, |
Virgule |
De gauche à droite |