Was sind sequence points und wie hängen sie mit undefiniertem Verhalten in C++ zusammen?
Hallo zusammen! Ich habe angefangen, C++ zu lernen, und bin auf eine sehr seltsame Situation gestoßen. Ich schreibe einfachen Code:
```cpp
int i = 0;
int result = i++ + i++;
```
Ich erwartete, dass result gleich 1 (0 + 1) sein würde, aber der Compiler gibt mal 0, mal 1 oder sogar eine ganz andere Zahl aus. Und wenn ich `i = i++ + 1` schreibe, ist das Ergebnis völlig unvorhersehbar. Mir wurde gesagt, das hängt mit "sequence points" und "undefiniertem Verhalten" (undefined behavior) zusammen. Aber ich verstehe nicht, was das ist. Könnt ihr es einfach erklären? Warum kann der Compiler die Operationen nicht einfach von links nach rechts ausführen? Und wie erkenne ich, in welchen Fällen der Code sicher ist und in welchen nicht? Bitte gebt Beispiele für korrekten und inkorrekten Code.
<<>>
Was sind sequence points?
Sequence points sind Momente im Programmablauf, in denen alle Nebenwirkungen vorheriger Berechnungen garantiert abgeschlossen sind und nachfolgende noch nicht begonnen haben. Einfach gesagt: Es sind "Kontrollpunkte", an denen der Zustand