Ordre d'évaluation des paramètres dans les appels de fonction
Dans les langages de programmation comme C et C, l'ordre dans lequel les paramètres de fonction sont évalués est un sujet de débat. Cet article approfondit les spécificités décrites par les normes de langage respectives.
Langage C
Selon les normes C99 et C11, il n'y a pas d'ordre fixe pour évaluer les paramètres de fonction . L'évaluation du désignateur de fonction, des arguments et des sous-expressions qu'ils contiennent se produit dans un ordre non spécifié, mais il existe un point de séquence avant l'appel de fonction réel. Cela implique que les effets secondaires des évaluations de paramètres ont lieu avant que la fonction n'entre dans son corps.
Langage C
En C, la norme du langage précise que l'ordre d'évaluation des arguments dans les appels de fonction n’est pas spécifié. Tous les effets secondaires des évaluations d’expressions d’arguments se produisent avant l’entrée de la fonction. L'ordre d'évaluation de l'expression postfixe et de la liste d'expressions d'arguments n'est pas non plus spécifié.
Utilisation de la pile matérielle
Ni les normes C ni C n'exigent l'utilisation du pile matérielle pour transmettre les paramètres de fonction. La méthode de transmission des paramètres est un détail d'implémentation laissé au concepteur du compilateur. Bien que la plupart des architectures utilisent une approche basée sur la pile, elle n'est pas universellement implémentée.
Conclusion
L'ordre d'évaluation des paramètres de fonction en C et C peut varier en fonction de l'implémentation, car elle n'est pas explicitement définie par leurs normes linguistiques. Cependant, il est crucial de noter que les effets secondaires des évaluations d'arguments ont lieu avant que les fonctions respectives ne soient exécutées dans les deux langages.
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!