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