Maison > développement back-end > C++ > L'ordre d'évaluation des arguments indéterminés de C affecte-t-il le comportement du programme ?

L'ordre d'évaluation des arguments indéterminés de C affecte-t-il le comportement du programme ?

DDD
Libérer: 2024-12-26 17:25:12
original
124 Les gens l'ont consulté

Does C  's Indeterminate Argument Evaluation Order Ever Affect Program Behavior?

Compilateurs et ordre d'évaluation des arguments indéterminés

La norme C permet aux implémentations d'évaluer les arguments de fonction dans n'importe quel ordre. Cela a-t-il un impact sur le comportement du programme ?

Le problème présumé

Considérez l'extrait de code suivant :

int i = 0;
foo(i++, i++);
Copier après la connexion

Si les arguments sont évalués de gauche à droite , je serai incrémenté deux fois avant d'être transmis à foo. Cependant, si les arguments sont évalués de droite à gauche, i ne sera incrémenté qu'une seule fois. Cela pourrait-il causer des problèmes ?

Compilateurs et évaluation des arguments

Bien que l'ordre d'évaluation des arguments dépend de l'implémentation, la plupart des compilateurs adhèrent à la convention d'appel de l'architecture cible. Sur x86, la convention d'appel Pascal évalue les arguments de gauche à droite, tandis que la convention d'appel C (__cdecl) les évalue de droite à gauche.

Les compilateurs en tiennent souvent compte, en particulier pour les programmes multiplateformes, pour éviter des imprévus. comportement.

Conclusion

L'ordre d'évaluation des arguments ne dépend pas de la langue mais de la plateforme et dépendant de la mise en œuvre. Bien que la norme ne précise pas l'ordre, les compilateurs suivent généralement la convention d'appel de l'architecture cible et peuvent ajuster l'ordre d'évaluation en conséquence. Cela garantit qu'un code mal écrit se comportera de manière cohérente, compte tenu de la convention d'appel correcte.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal