Inkrement-und Dekrementoperatoren Hilfe
-
int a=12;
a+=++a + a++;
a = a+a;
cout<<a<<endl;
Warum kommt dort 80 heraus???wenn ich das nun anders schreibe,
int a=12;
a= a+ ++a + a++; <---dies ist doch die langform von dem oberen oder nicht???
a= 12 + 13 =25 und dann muss doch von 25 noch einer dazu addiert werden 26.
a= a+a;
cout <<a<<endl;
dann kommt da aber nicht 80 heraus.
ich schnall das nicht *gg*
Kann mir jemand helfen???
-
das hat undefiniertes verhalten, weil dein compiler nicht weiß was er zuerst ausrechnen soll.
-
Merksatz: in einem Ausdruck eine Variable nicht mehrmals verändern...
-
???
natürlich weis mein compiler das !
-
ich glaub ich weiß auch nun wie man auf die 80 kommt, denn die 2. zeile muss ja insgesamt 40 ergeben ...
und ich hab den fehler gemacht, dass ich von links aus gegangen bin... aber der kopilier liest immer von rechts *ggg*
-
Pritt schrieb:
???
natürlich weis mein compiler das !
woher? wenn du während eines ausdrucks eine variable mehrfach veränderst, hat das undefiniertes verhalten.
-
aber es kommt 80 heraus ... hhmmm
-
Pritt schrieb:
aber es kommt 80 heraus ... hhmmm
geile argumentation.
blos uns nichts glauben!
-
Noch mal das gleiche
Undefiniertes Verhalten heisst nicht das der Compiler oder dein Programm abstürzt.
Er entscheidet sich für IRGENDEINE Reihenfolge bei der Auswertung. Die liefert in
diesem Fall bei dir 80. Auf einer andern Plattform oder auch mit einem anderen
Compiler kann das Ergebnis ganz anders aussehen.
=> In keinem Fall sowas machen
-
okok ... danke *g*
habs eingesehn