Opérateurs intégrés C++, priorité et associativité

Le langage C++ inclut tous les opérateurs C et en ajoute plusieurs nouveaux. Les opérateurs spécifient une évaluation à effectuer sur un ou plusieurs opérandes.

Priorité et associativité

La priorité de l’opérateur spécifie l’ordre des opérations dans les expressions qui contiennent plusieurs opérateurs. L’associativité d’opérateur spécifie si, dans une expression qui contient plusieurs opérateurs ayant la même priorité, un opérande est regroupé avec celui situé à gauche ou à droite.

Autres orthographes

C++ spécifie d’autres orthographes pour certains opérateurs. En C, les autres orthographes sont fournies en tant que macros dans l’en-tête <iso646.h> . En C++, ces alternatives sont mot clé et l’utilisation de <iso646.h> ou ciso646> équivalent <C++ est déconseillée. Dans Microsoft C++, l’option ou /Za le /permissive- compilateur est nécessaire pour activer les autres orthographes.

Priorité des opérateurs C++ et table d’association

Le tableau suivant indique la priorité et l'associativité des opérateurs C++ (de priorité décroissante). Les opérateurs ayant le même numéro de priorité ont une priorité identique, à moins qu'une autre relation soit explicitement forcée par des parenthèses.

Description des opérateurs Opérateur Alternative
Priorité du groupe 1, aucune association
Résolution d’étendue ::
Priorité du groupe 2, de gauche à droite associativité
Sélection de membre (objet ou pointeur) . ou ->
Indice de tableau []
Appel de fonction ()
Incrément postfix ++
Décrémentation postfix --
Nom du type typeid
Conversion de type constant const_cast
Conversion de type dynamique dynamic_cast
Conversion de type réinterprétée reinterpret_cast
Conversion de type statique static_cast
Priorité du groupe 3, droite à gauche associativité
Taille de l’objet ou du type sizeof
Incrément de préfixe ++
Décrémentation de préfixe --
Un complément ~ compl
Logique non ! not
Négation unaire -
Plus unaire +
Adresse de &
Indirection *
Create object (Créer un objet) new
Détruire l’objet delete
Cast ()
Priorité du groupe 4, de gauche à droite associativité
Pointeur vers membre (objets ou pointeurs) .* ou ->*
Priorité du groupe 5, de gauche à droite associativité
Multiplication *
Division /
Module %
Priorité du groupe 6, de gauche à droite associativité
Addition +
Soustraction -
Priorité du groupe 7, de gauche à droite associativité
Décalage vers la gauche <<
Décalage vers la droite >>
Priorité du groupe 8, de gauche à droite associativité
Inférieur à <
Supérieur à >
Inférieur ou égal à <=
Supérieur ou égal à >=
Priorité du groupe 9, de gauche à droite associativité
Égalité ==
Inégalité != not_eq
Groupe 10 priorité de gauche à droite associativité
AND au niveau du bit & bitand
Priorité du groupe 11, de gauche à droite associativité
OR exclusif au niveau du bit ^ xor
Priorité du groupe 12, de gauche à droite associativité
OR inclusive au niveau du bit | bitor
Priorité du groupe 13, de gauche à droite associativité
ET logique && and
Priorité du groupe 14, de gauche à droite associativité
OU logique || or
Priorité du groupe 15, droite à gauche associativité
Conditions ? :
Affectation =
Affectation de multiplication *=
Affectation de division /=
Affectation de module %=
Affectation d’addition +=
Affectation de soustraction -=
Affectation de décalage gauche <<=
Affectation de décalage droit >>=
Affectation AND au niveau du bit &= and_eq
Affectation OR inclusive au niveau du bit |= or_eq
Affectation OR exclusive au niveau du bit ^= xor_eq
levée d’expression throw
Priorité du groupe 16, de gauche à droite
Comma ,

Voir aussi

Surcharge d’opérateur