Avatar ·

Que sont les points de séquence (sequence points) et comment sont-ils liés au comportement indéfini en C++ ?

Bonjour à tous ! Je suis un développeur C++ débutant et j'ai récemment rencontré le concept de "points de séquence" (sequence points). Sur de nombreux forums, on écrit que la violation des règles des points de séquence conduit à un comportement indéfini (undefined behavior), mais je ne comprends pas tout à fait ce que cela signifie en pratique. Voici un exemple simple qui me trouble : ```cpp int i = 0; int result = i++ + i++; ``` J'ai lu quelque part que ce code provoque un comportement indéfini. Mais pourquoi ? À première vue, il semble que le résultat soit prévisible : d'abord on prend l'ancienne valeur de `i` (0), puis on l'incrémente, et ce deux fois. Je m'attendrais à ce que `result` devienne `0 + 1 = 1`, et `i` devienne `2`. Mais le compilateur dit que c'est un UB. Un autre exemple : ```cpp int arr[5] = {0}; int i = 0; arr[i] = i++; ``` Ici, j'assigne une valeur à un élément du tableau en utilisant un index qui est lui-même modifié. Je ne comprends pas quelle valeur de l'index sera utilisée — l'ancienne ou la nouvelle ? Et pourquoi cela est-il considéré comme dangereux ? Pouvez