cout << (i++) << (i++);
-
ist undefinied oder?
-
ich glaub nicht.
das << ist doch ein überladener operator und müsste als sequenzpunkt gelten...

-
warum undefiniert ?
i=0;
cout << (i++) << endl << (i++) <<endl;
cout << 0 <<endl << 1 <<endl;definiert.... gib es mal in deinen compiler ein, dann siehst du dass es eine fortlaufende zahl ist
-
sowas wäre undefiniert:
cout << (i++) + (i++);
-
Stelfer schrieb:
gib es mal in deinen compiler ein, dann siehst du dass es eine fortlaufende zahl ist
Das sagt genau gar nichts darueber aus, ob etwas undefiniert ist, oder nicht.
-
Hab nur ein seltsamer Fehler:
cout << obj(x) << obj(x); --> unerwartete Ausgabe
cout << obj(x); cout << obj(x); --> erwartete AusgabeIch werde schauen.
-
ten schrieb:
sowas wäre undefiniert:
cout << (i++) + (i++);ja weil i++ an i++ hängt jedoch wenn man es einzeln ausgibt bzw. nicht auf einmal ausrechnet ist es definiert
-
Stelfer schrieb:
ten schrieb:
sowas wäre undefiniert:
cout << (i++) + (i++);ja weil i++ an i++ hängt jedoch wenn man es einzeln ausgibt bzw. nicht auf einmal ausrechnet ist es definiert
keineswegs. Die mehrfache Veränderung einer Variablen zwischen 2 Sequenzpunkten führt auf jeden Fall zu undefiniertem Verhalten.
cout << (i++) << endl << (i++) <<endl;ist auch nichts weiter als
cout.operator<<(i++).operator<<(endl).operator<<(i++).operator<<(endl);Seiteneffekte innerhalb der Funktionen haben bei der Rückkehr aus der Funktion stattgefunden (andernfalls wäre ja auch das Verketten von op<< für cout undefiniert). Für i gilt das nur, wenn der operator++ für dieses überladen wurde und es sich somit auch nur um Funktionsaufrufe handelt, aber auch dann ist die Reihenfolge der Inkrementierung unspezifiziert.