Précédence et associativité en programmation
En programmation, l'ordre des opérations est crucial pour évaluer correctement les expressions. La priorité et l'associativité des opérateurs jouent un rôle essentiel dans la détermination de cet ordre.
Qui définit la priorité et l'associativité des opérateurs ?
La norme du langage de programmation spécifique définit la priorité et l'associativité des opérateurs. . Pour C et C , ces définitions peuvent être trouvées dans les grammaires de langage respectives.
Comment la priorité des opérateurs est-elle définie ?
La priorité des opérateurs établit le regroupement des opérateurs en fonction de leur priorité. Les opérateurs ayant une priorité plus élevée sont évalués avant ceux ayant une priorité inférieure. Cette hiérarchie est définie dans la grammaire du langage.
Comment l'associativité est-elle définie ?
L'associativité détermine la manière dont les utilisations adjacentes du même opérateur sont regroupées. Par exemple, si un opérateur est associatif de gauche à droite, les utilisations adjacentes de cet opérateur s'associent de gauche à droite. Cette règle est également dérivée de la grammaire du langage.
Relation avec l'ordre d'évaluation
La priorité et l'associativité des opérateurs ne contrôlent pas directement l'ordre d'évaluation des appels de fonction. La norme exige uniquement que les opérandes d'un opérateur soient évalués avant l'opérateur lui-même.
Associativité des fonctions de gauche à droite
La croyance selon laquelle les fonctions sont toujours évaluées à partir de la gauche à droite n’est pas tout à fait exact. Bien que certains opérateurs, tels que l'opérateur d'appel de fonction, aient une associativité de gauche à droite, cela ne dicte pas l'ordre dans lequel les appels de fonction sont évalués.
Impact de l'associativité
Prenons l'exemple f1() f2() * f3(). L'opérateur * a une priorité plus élevée que l'opérateur, donc l'expression est regroupée comme f1() (f2() * f3()). Cependant, l'ordre d'évaluation des appels de fonction n'est pas spécifié par l'associativité.
Autres considérations sur la séquence
Des opérateurs spécifiques peuvent imposer des restrictions de séquençage sur l'évaluation des opérandes. Par exemple, dans x || y, x est toujours évalué avant y. Cela permet des comportements de court-circuit.
Contexte historique
Les points de séquence étaient auparavant utilisés en C et C pour définir l'ordre d'évaluation. Cependant, les normes modernes ont adopté le concept de relations « séquencées avant » pour décrire ce comportement.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3