1030 votes

Comportement indéfini et points de séquence

Que sont les "points de séquence" ?

Quelle est la relation entre le comportement indéfini et les points de séquence ?

J'utilise souvent des expressions amusantes et alambiquées comme a[++i] = i; pour me sentir mieux. Pourquoi devrais-je arrêter de les utiliser ?

Si vous avez lu cet article, n'oubliez pas de consulter la question de suivi. Comportement indéfini et points de séquence rechargés .

<i>(Note : Ceci est censé être une entrée à <a href="https://stackoverflow.com/questions/tagged/c++-faq">FAQ C++ de Stack Overflow </a>. Si vous voulez critiquer l'idée de fournir une FAQ dans ce formulaire, alors <a href="https://meta.stackexchange.com/questions/68647/setting-up-a-faq-for-the-c-tag">le post sur meta qui a commencé tout ça </a>serait l'endroit idéal pour le faire. Les réponses à cette question sont suivies dans le <a href="https://chat.stackoverflow.com/rooms/10/c-lounge">Chatroom C++ </a>où l'idée de la FAQ est née en premier lieu, donc votre réponse a de grandes chances d'être lue par ceux qui ont eu l'idée).</i>

2voto

awiebe Points 995

Sur C99(ISO/IEC 9899:TC3) qui semble absent de cette discussion jusqu'à présent, les stéments suivants sont faits concernant l'ordre d'évaluation.

[...] l'ordre d'évaluation des sous-expressions et l'ordre dans lequel les effets secondaires les effets secondaires ont lieu sont tous deux non spécifiés. (Section 6.5 pp 67)

L'ordre d'évaluation des opérandes n'est pas spécifié. Si une tentative est faite de modifier le résultat d'un opérateur d'affectation ou d'y accéder après le point de séquence suivant, le comportement [sic] est indéfini.(Section 6.5.16 pp 91)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X