Maison >développement back-end >C++ >Comment les compilateurs gèrent-ils réellement l'ordre non spécifié des arguments de fonction en C ?
Les compilateurs et l'ordre d'évaluation indéterminé des arguments de fonction
Bien que la norme C permette aux implémentations d'évaluer les arguments de fonction dans un ordre non spécifié, il reste on ne sait pas si les compilateurs exploitent réellement cette flexibilité. On pourrait supposer que l'évaluation de gauche à droite serait répandue pour éviter de casser du code mal écrit.
Cependant, l'ordre d'évaluation dépend de facteurs tels que le type d'argument, la convention d'appel, l'architecture et les paramètres du compilateur. Par exemple, les processeurs x86 avec la convention d'appel Pascal évaluent les arguments de gauche à droite, tandis que la convention d'appel C (__cdecl) les évalue de droite à gauche.
Par conséquent, il est crucial pour les programmes multiplateformes d'envisager d'appeler conventions pour éviter les surprises. Selon le blog de Raymond Chen et la section Stack and Calling du manuel GCC, les compilateurs peuvent s'écarter de l'évaluation de gauche à droite dans certaines circonstances.
Il est important de noter que la norme du langage laisse l'ordre d'évaluation non spécifié, ce qui signifie que c'est non déterministe et non garanti. Cela permet à différents compilateurs et plates-formes d'avoir différentes séquences d'exécution pour un programme et une entrée donnés.
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!