Maison > développement back-end > C++ > Comment la priorité et l'associativité des opérateurs affectent-elles l'ordre du flux de sortie C ?

Comment la priorité et l'associativité des opérateurs affectent-elles l'ordre du flux de sortie C ?

Susan Sarandon
Libérer: 2024-12-28 15:30:32
original
150 Les gens l'ont consulté

How Does Operator Precedence and Associativity Affect C   Output Stream Ordering?

Précédence et associativité des opérateurs dans les flux de sortie

En C , le comportement de l'opérateur du flux de sortie (<<) peut être contre-intuitif lorsque plusieurs arguments sont fournis. Bien qu'il puisse sembler que les arguments sont traités de gauche à droite, ce n'est pas toujours le cas.

Comme illustré dans les extraits de code ci-dessous, l'ordre de sortie peut différer en fonction de l'emplacement du << opérateur et le nombre d'arguments fournis.

myQueue.enqueue('a');
myQueue.enqueue('b');
cout << myQueue.dequeue() << myQueue.dequeue(); // prints "ba"
Copier après la connexion

Dans ce cas, le premier << L'opérateur est en dehors des parenthèses, donc le premier appel retiré de la file d'attente est évalué en premier. Ce résultat est ensuite utilisé comme argument pour le deuxième << opérateur.

Cependant, si l'opérateur << les opérateurs sont placés entre parenthèses, l'ordre des opérations change.

myQueue.enqueue('a');
myQueue.enqueue('b');
cout << (myQueue.dequeue() << myQueue.dequeue()); // prints "ab"
Copier après la connexion

Ici, les parenthèses regroupent les opérateurs << opérateur avec le premier appel retiré de la file d'attente, provoquant le premier << pour évaluer le résultat du retrait de la file d'attente. Ce résultat est ensuite utilisé comme argument pour le deuxième appel de sortie de file d'attente, suivi du <<

Ce comportement est dû au fait que l'opérateur << L'opérateur n'a pas de point de séquence, ce qui signifie que le compilateur est autorisé à optimiser l'ordre d'évaluation de ses arguments. Pour garantir une sortie cohérente, il est recommandé d'utiliser des parenthèses pour regrouper explicitement les arguments en cours d'impression.

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