Maison > développement back-end > C++ > En quoi la priorité des opérateurs diffère-t-elle de l'ordre d'évaluation en programmation ?

En quoi la priorité des opérateurs diffère-t-elle de l'ordre d'évaluation en programmation ?

Susan Sarandon
Libérer: 2024-12-21 04:31:12
original
960 Les gens l'ont consulté

How Does Operator Precedence Differ from the Order of Evaluation in Programming?

Quelle est la relation entre la priorité des opérateurs et l'ordre d'évaluation ?

Contrairement à la compréhension populaire, la priorité des opérateurs ne détermine pas entièrement l'ordre des évaluation en programmation. Bien que la priorité régisse l'ordre des calculs de valeurs, l'évaluation des opérandes eux-mêmes reste indépendante de la priorité.

Exemple :

Considérons l'expression x < y &Lt ; z. Les règles de priorité imposent qu'il soit analysé comme (x < y) < z. Cependant, une machine à pile, par exemple, pourrait évaluer l'expression comme suit :

push(z);
push(y);
push(x);
test_less();  // compares TOS to TOS(1), pushes result on stack
test_less();  // compares TOS to TOS(1), pushes result on stack
Copier après la connexion

Ceci évalue z avant x ou y, mais évalue toujours (x < y) et compare le résultat à z, comme prévu.

Évaluation et effets secondaires :

Effets secondaires, tels que l'incrémentation ou la décrémentation une variable, sont exécutés conceptuellement par un thread distinct. Ce fil se joint au point de séquence suivant. Considérons l'expression a = bc;. Il pourrait être exécuté comme suit :

push(a);
push(b);
push(c+1);
side_effects_thread.queue(inc, b);
side_effects_thread.queue(inc, c);
add();
assign();
join(side_effects_thread);
Copier après la connexion

Ici, a est évalué avant b ou c, même s'il est la cible de la mission. Tenter d'utiliser une variable dans n'importe quelle autre partie d'une expression avant le point de séquence suivant entraîne un comportement indéfini.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal