Maison >développement back-end >C++ >L'ordre d'évaluation des opérandes est-il garanti en C et C ?
Ordre d'évaluation des opérandes dans les expressions
Lors de l'écriture d'expressions, il est important de comprendre l'ordre dans lequel les opérandes seront évalués. Cela peut avoir un impact sur le résultat de l'expression, en particulier lorsque des effets secondaires sont impliqués.
C et C
Dans C et C , l'ordre d'évaluation des opérandes est non précisé. Cela signifie que le compilateur est libre d'évaluer les opérandes dans l'ordre de son choix.
Par exemple, considérons l'expression a b. Il n’est pas garanti que a soit évalué avant b. Le compilateur peut choisir d'évaluer b en premier, puis de stocker le résultat dans une variable temporaire avant d'évaluer a.
La norme pour C indique spécifiquement que « l'ordre d'évaluation des arguments de la fonction n'est pas spécifié », et pour la normale opérateurs, "l'ordre d'évaluation des opérandes des opérateurs individuels et des sous-expressions des expressions individuelles [...] n'est pas spécifié."
C 11 et au-delà
Le libellé l’ordre d’évaluation des opérandes a légèrement changé dans C 11 et les versions ultérieures. La deuxième déclaration indique désormais que l'ordre est « non séquencé » plutôt que non spécifié. Cependant, il s’agit essentiellement du même concept. Le compilateur n'est toujours pas obligé d'évaluer les opérandes dans un ordre particulier.
Conclusion
Il est important d'être conscient que l'ordre d'évaluation des opérandes n'est pas spécifié en C et C. Cela peut avoir un impact sur le résultat des expressions, en particulier lorsque des effets secondaires sont impliqués. Lors de la rédaction d'expressions, il est préférable d'éviter de s'appuyer sur un ordre d'évaluation spécifique.
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!