dekremenieren / inkrementieren
-
bei folgender Übung soll / kommt als Ergebnis 40 raus
int a;
a=12;
a = a + ++a + a++;cout << a << endl;
nachvollziehen kann ich es leider nicht.
-
-
Ich weiß nicht, musst du jetzt zu jeder Übung die man dir zum selben Thema stellt, hier nen Thread aufmachen?
In dem anderen wurde ja bereits ausführlich darüber diskutiert, dass das Ergebnis undefiniert ist. Und wenn dir jemand diese Übung gibt und sagt es MUSS das Ergebnis rauskommen, ist das Käse. Undefiniert war das Stichwort.
-
NEWc++MAN schrieb:
bei folgender Übung soll / kommt als Ergebnis 40 raus
int a;
a=12;
a = a + ++a + a++;cout << a << endl;
nachvollziehen kann ich es leider nicht.
es ist vorstellbar, daß der compiler aus a++ sozusagen ein t=a+1;return t;a=t macht. und wenn das a=t gaaanz am ende ausgeführt wird, kanns dir passieren, daß da nicht 40 rauskommt, sondern 13.
die sprache c++ definiert nicht, was da rauskommen soll. das ist ein programmierfehler und kein compiler muss da einen bestimmten wert liefern. jeder compiler darf es anders machen.
-
BTW: was sind denn das für Übungen? Nicht etwa von einer Schule oder sowas, oder? Oder will ein Dozent zeigen was undefined Behaviour ist?
-
Ist das wirklich undefiniert?
Werden die Operatoren nicht in der Reihenfolge wie hier angegeben ausgewertet?
http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence
-
theta schrieb:
BTW: was sind denn das für Übungen? Nicht etwa von einer Schule oder sowas, oder? Oder will ein Dozent zeigen was undefined Behaviour ist?
habe mir das Buch "C++ Programmierung lernen" besorgt, mit Büchern aus dem Verlag (A-W)hatte bis her immer sehr gute Erfahrungen gemacht.
Naja, aller Anfang ist schwer und je mehr ich mich - auch mit Fehlern - beschäftige, desto fester sitzt es dann wohl.
Danke für die Tipps