Question

J'ai regardé SO / CEI 9899 : 201x sous J.1 comportement non spécifié:

"The order in which subexpressions are evaluated and the order in which side effects
take place, except as specified for the function-call (), &&, ||, ?:, and comma
operators (6.5)."

Est-ce que cela signifie que dans

func1() + func2();

func2 () peut être préformé avant func1 (), ou même pendant func1 ()?

Était-ce utile?

La solution

Dans la norme actuelle (ISO / IEC 9899: 1999), il y a un point de séquence entre les appels de fonction, mais l'ordre d'évaluation des opérandes à + n'est pas spécifié si func1 peut être appelée avant ou après func2 mais les appels de fonction doivent pas se chevaucher ou être intercalées en aucune façon.

Cela signifie que chacune des func1 et func2 peut, si on le souhaite, d'interagir avec des données partagées sans que les changements de données en dessous d'une manière inattendue.

Autres conseils

Pas pendant, mais que, soit 1 puis 2 ou 2 puis 1.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top