(y++)-(--y)
-
+fricky schrieb:
ich bin von realen C-compilern ausgegangen, da werden solche undefinierten audrücke immer 'irgendwie' verarbeitet (meistens in der reihenfolge, in der man's nicht erwartet).
Das ist ja auch zu erwarten. Aber ich nehme an, es gibt Plattformen, bei denen nicht jede mögliche Reihenfolge vernünftiges Verhalten hat. Vielleicht haben die ganz schwierige Adressierungsmodi, irgendwelche Probleme mit Pre/Postinkrement, Locking-Geschichten oder sonstwas. Müsste man mal erforschen, aber dazu fehlt mir die Energie
-
Hallo!
Zeile 9:
Hier verstehe ich nicht ganz, wieso für x=0 herauskommt, denn:
y++ => Erhöhung von y um 1 nach der Operation x= ...
--y => y wird um 1 reduziert vor der Operation x=..
Somit würde ja stehen: x=6-5=1unabhaengig vom undefined behaviour usw... wuerde ich sagen, dass
Dein Compiler ein Ergebnis liefert, welches ich erwarten wuerde.Der Code
a=y++; b=a- --y;
ergibt, das b = 0 ist.
Denn y++ gibt den y-Wert zurueck und erhoeht ihn dann um eins.
--y dekrementiert y und gibt dann den Wert zurueck.Somit wurde Dein Code von links nach rechts ausgewertet.
Gruesse,
Richie
-
Bashar schrieb:
... Müsste man mal erforschen, aber dazu fehlt mir die Energie
Aha, Stromrechnung nicht bezahlt?