Qu'est-ce que la priorité et l'associativité de l'opérateur C

Qu Est Ce Que La Priorite Et L Associativite De L Operateur C



Les opérateurs sont couramment utilisés pour effectuer diverses opérations arithmétiques et logiques en C. Le langage de programmation C suit un ordre spécifique appelé priorité des opérateurs et associativité pour déterminer l'ordre des opérations lors de l'exécution. Les règles de priorité des opérateurs et associativité aider à écrire du code sans erreur et augmenter la lisibilité du code.

Cet article fournit un didacticiel complet pour vous aider à en savoir plus sur l'associativité et la priorité des opérateurs en C.

Priorité des opérateurs en C

Priorité des opérateurs décrit la séquence dans laquelle plusieurs opérateurs sont évalués lors de l'évaluation d'expressions. Par exemple, si une expression a à la fois des opérateurs d'addition et de multiplication, lequel doit être évalué en premier ? La réponse est simple, C suit certaines règles pour résoudre une telle ambiguïté, communément appelées priorité des opérateurs . En C, priorité des opérateurs est classé en 17 niveaux, allant des opérateurs unaires à l'opérateur conditionnel ternaire. Les opérateurs les plus utilisés comme les opérateurs arithmétiques, les opérateurs relationnels, les opérateurs logiques et les opérateurs au niveau du bit suivent la norme C priorité des opérateurs protocole.







Priorité les règles dictent quels opérateurs ont une priorité plus élevée que les autres lors de l'évaluation des expressions. Plusieurs types d'opérateurs dans le langage de programmation C ont des degrés divers de priorité . Par exemple, les opérateurs unaires ont une plus grande priorité que les opérateurs binaires. Voici une liste d'opérateurs triés par ordre croissant de priorité :



Opérateur Signification de l'opérateur Associativité
()
[]
->
.
Appel fonctionnel

Référence d'élément de tableau



Sélection indirecte des membres





Sélection directe des membres

De gauche à droite
!
~
+

++

&
*
taille de
(taper)
Négation logique

Complément au niveau du bit (à 1)

Unaire plus

Moins unaire

Incrément

Décrémenter

Déréférencement (Adresse)

Référence du pointeur

Renvoie la taille d'un objet

Typecast (conversion)

De droite à gauche
*
/
%
Multiplier

Diviser

Reste

De gauche à droite
+
Plus binaire (addition)

Moins binaire (soustraction)

De gauche à droite
<<
>>
Décalage à gauche

Décalage à droite

De gauche à droite
<
<=
>
>=
Moins que

Inférieur ou égal

Plus grand que

Meilleur que ou égal

De gauche à droite
==
!=
Égal à

Pas égal à

De gauche à droite
& ET au niveau du bit De gauche à droite
^ OU exclusif au niveau du bit De gauche à droite
| OU au niveau du bit De gauche à droite
&& ET logique De gauche à droite
|| OU logique De gauche à droite
? : Opérateur conditionnel De droite à gauche
=
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>=
Affectation simple

Attribuer un produit

Attribuer un quotient

Attribuer le reste

Attribuer la somme

Attribuer la différence

Attribuer un ET au niveau du bit

Attribuer XOR au niveau du bit

Attribuer un OU au niveau du bit

Attribuer un décalage à gauche

Attribuer un décalage à droite

De droite à gauche
, Séparateur d'expressions De gauche à droite

Ces règles guident le compilateur sur la façon d'évaluer les expressions avec plusieurs opérateurs dans la même expression. L'opérateur de multiplication, par exemple, a plus de priorité que l'opérateur d'addition dans l'équation A + B * C, conformément au priorité règles. Par conséquent, le compilateur évaluera d'abord l'expression B * C avant d'ajouter A au résultat.

Regardons un exemple de priorité des opérateurs à travers le code.

#include

entier principal ( ) {

entier un = 43 , b = onze , c = 16 , d = 31 ;

entier résultat = ++ un * b -- + c / -- d ;

printf ( 'a = %d \n ' , un ) ;

printf ( 'b = %d \n ' , b ) ;

printf ( 'c = %d \n ' , c ) ;

printf ( 'd = %d \n ' , d ) ;

printf ( 'résultat = %d \n ' , résultat ) ;

retour 0 ;

}

Les quatre variables a, b, c et d sont déclarées dans le code ci-dessus et leurs valeurs initiales sont 43, 11, 16 et 31 en conséquence. Ensuite, il applique une variété d'opérateurs arithmétiques et d'affectation à ces variables dans une expression. L'expression augmente la valeur de a en utilisant l'opérateur de pré-incrémentation ++a, multiplie le résultat par l'opérateur de post-décrémentation b–, puis ajoute le résultat à la division de c par la valeur pré-décrémentée de d. (en utilisant l'opérateur de pré-décrémentation –d). La variable result est ensuite utilisée pour contenir le résultat total de cette expression.

Sortir

Associativité en C

Associativité fait référence à l'ordre dans lequel les opérateurs sont évalués lors d'une expression avec la même priorité. De gauche à droite et de droite à gauche associativité sont les deux formes d'associativité en C. Si deux opérateurs ont le même priorité , ils sont évalués de gauche à droite selon le concept de gauche à droite associativité . Néanmoins, si la même précédence est observée, les opérateurs sont évalués de droite à gauche selon la droite à gauche associativité .

Par exemple, l'opérateur d'incrémentation ++ a de droite à gauche associativité , c'est-à-dire l'incrément opérateur est évalué après la variable. Alors que le ET logique opérateur a une gauche à droite associativité , ce qui signifie que l'opérateur est évalué de gauche à droite.

#include

int main() {

entier un = 6 , b = 3 , c = 2 ;

int result = a * b / c;

printf( 'résultat = %d \n ' , résultat);

retour 0 ;

}

Les trois variables a, b et c sont déclarées dans ce code, et elles sont initialisées à 6, 3 et 2 respectivement. Ensuite, il applique des opérations de multiplication et de division à ces variables dans une expression. La multiplication et la division sont classées de gauche à droite en C en fonction de leur associativité car ils ont le même niveau de priorité. Cela indique que l'opération de division vient en premier, suivie de l'opération de multiplication lors de l'évaluation de l'expression, a * b / c.

Sortir

Conclusion

Priorité des opérateurs et associativité sont des concepts cruciaux en programmation C qui aident à déterminer l'ordre d'exécution des expressions. Les opérateurs avec le plus haut priorité niveau sont évalués en premier et associativité les règles aident à déterminer l'ordre lorsque plusieurs opérateurs avec la même priorité sont utilisés. Compréhension priorité des opérateurs et associativité est essentiel lors de la conception de programmes complexes, et il aide à produire un code plus propre et plus efficace avec moins d'erreurs.