steckl: Wie komisch ist das denn?

Beitrag lesen

Hi,

Eben nochmal getestet: Mit Microsoft VC++ 6 kommt bei
beiden Varianten das falsche Ergebnis 10 heraus (hm...).
Anscheinend gibt es hinsichtlich der Interpretation
der Auswerte-Reihenfolge von Funktionsparametern
noch weiteren Spielraum.

g++ (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
Das übrigens meine Version. Das dann schon 4.2 es gerade anders machen soll, ist auch seltsam. Irgendwelche Schalter hab ich nicht verwendet.

Bei 4.2 ist es bei mir wie bei dir.
Die genaue Version bei mir ist:
gcc-Version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)

Falls es jemanden interessiert, hier sind ein paar Beispiele aus meiner Vorlesung, bei denen tatsächlich nicht definiert ist, wie sich der Compiler verhalten muss:
i = 2;
k = (i++) + i;         // k=4 oder k=5 ?
s[i] = i++;            // s[i]=i oder s[i+1]=i ?
s[i++] = i;            // s[i]=i oder s[i]=i+1 ?

Stack ist sowas wie der "Hafen", von dem aus der Funktionaufruf abgeschickt wird und damit der Platz, auf dem die Antwort wieder ankommen kann, richtig?

Der Stack ist ein Stapelspeicher, auf dem z.B. beim Aufruf einer Funktion Rücksprungadressen, Parameter und lokale Variablen abgespeichert werden.
Genaueres unter Stack

mfG,
steckl