Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » inkrement frage

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
08.07.2007, 17:13 Uhr
~frager
Gast


servus,

wieso ergibt folgender code 6?

int i = 1;

i = ++i + ++i;

cout << i << endl;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.07.2007, 18:24 Uhr
Botz3000



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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.07.2007, 18:24 Uhr
Blubber2063



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.

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.07.2007, 18:32 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von Blubber2063:
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.07.2007, 20:57 Uhr
0xdeadbeef
Gott
(Operator)


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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.07.2007, 07:47 Uhr
(un)wissender
Niveauwart


Ich würde das eigentlich streichen. Durch Optimierungstechniken wäre auch durchaus 4 drin.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.07.2007, 16:16 Uhr
Suba Esel



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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
09.07.2007, 16:24 Uhr
virtual
Sexiest Bit alive
(Operator)


@SubEsel.

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)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
09.07.2007, 20:30 Uhr
Suba Esel



Ach so
Thx
--
Simon

Dieser Post wurde am 09.07.2007 um 20:30 Uhr von Suba Esel editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.07.2007, 23:00 Uhr
~blurry333
Gast


hier kommt 4 raus:

i=i++ + i++ ;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: