Auswertungsreihenfolge in C

Sprachstandard (C99, C++) benutzt Begriff sequence point (Meilenstein):

bei Komma, Fragezeichen, && und ||


die Nebenwirkungen zwischen Meilensteinen müssen unabhängig sein (nicht die gleiche Speicherstelle betreffen),

ansonsten ist das Verhalten undefiniert (d.h., der Compiler darf machen, was er will)

int x = 3; int y = ++x + ++x + ++x;


vgl. Aussagen zu sequence points in http://gcc.gnu.org/readings.html

Gurevich, Huggins: Semantics of C, http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.6755



Johannes Waldmann 2013-01-28