hmm, ich schätze mal, weil der ++-operator vor + ausgewertet wird?
das erste ++i macht aus i 2, und das zweite 3, so dass am ende i = 3 + 3 dasteht sozusagen, und dann kommt erst das +.Dieser Post wurde am 08.07.2007 um 18:24 Uhr von Botz3000 editiert.
Das liegt an der Ausführungsreihnfolge. Das musst du dir so vorstellen:
Code:
i = add(++i,++i); da immer erst die Parameter der Funktion ausgewertet werden und dann die Funktion passiert hier ++i;++i; das ergibt für i den Wert 3. Nun wird die Addition ausgeführt und 3+3 ist 6.
Das liegt an der Ausführungsreihnfolge. Das musst du dir so vorstellen:
Code:
i = add(++i,++i); da immer erst die Parameter der Funktion ausgewertet werden und dann die Funktion passiert hier ++i;++i; das ergibt für i den Wert 3. Nun wird die Addition ausgeführt und 3+3 ist 6.
du meinst wohl:
C++:
i = add(inc(i),inc(i));
bzw lieber inkrement als exkrement -- class God : public ChuckNorris { };Dieser Post wurde am 08.07.2007 um 19:02 Uhr von FloSoft editiert.
Eigentlich ist das Ergebnis hier mangels Sequenzpunkt höchst undefiniert. Könnte genausogut 4 oder 5 sein. Naja, 4 wär etwas seltsam. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra
Wie sollte es denn zu 4 kommen? 5 hielte ich für logisch, wies im Standard aussieht, weiß ich nicht, könnte aber auch sein. Aber 4? Das käme meiner Meinung nach raus, wenn es i = ++i + i++ wäre... obwohl nee, das wäre auch 5^^ -- Simon
Lt. Standard wg fehlenden SequencePoint nicht definiertes Verhalten. Somit ist auch 4711 theoretisch denkbar. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)