Maison  >  Article  >  développement back-end  >  L'ordre d'évaluation des opérandes dans `a b` est-il garanti en C ?

L'ordre d'évaluation des opérandes dans `a b` est-il garanti en C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 23:05:29711parcourir

Is the evaluation order of operands in `a   b` guaranteed in C  ?

Ordre d'évaluation des opérandes en C

Lors de l'évaluation d'une expression impliquant plusieurs opérandes, il est essentiel de comprendre l'ordre dans lequel ils sont traités. Dans le cas spécifique de a b, a est-il garanti d'être évalué avant b, ou l'ordre est-il indéterminé ?

Selon la norme C :

Pour les types définis par l'utilisateur :

  • a b est traité comme un appel de fonction et l'ordre d'évaluation des arguments est non spécifié.

Pour les opérateurs réguliers :

  • L'ordre d'évaluation des opérandes et des sous-expressions est généralement non spécifié. Cependant, en C 11, le libellé a changé pour « non séquencé », ce qui signifie essentiellement la même chose.

Par conséquent, en C et en C, l'ordre d'évaluation de a et b dans l'expression a b est non déterminé par la spécification du langage. Cela peut varier en fonction de facteurs tels que les optimisations du compilateur et l'architecture matérielle.

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!

Déclaration:
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