Verodern von zwei Variablen
-
Hallo zusammen,
ich verstehe folgende Aufgabe nicht.
Wir sollen die Ausgabe bestimmen.Verodern kenne ich nur z.B. im Zusammenhang mit if-Verzweigungen oder Schleifen.
Die Logik hier verstehe ich aber leider nicht
Es werden beide Variablen inkrementiert. Aber warum??
Warum werden beide inkremetiert und nicht nur einer ? Das würde ja eigentlich reichen.
Und was macht es für einen Sinn die beiden Anweisungen zu verodern.int main(int argc, char** argv) { int j,i; i=0; j=-1; j=++j || i++; cout << i << " " << j << endl; return 0; }
vielen Dank
-
Es ist auch das Gleiche wie in einer if-Bedingung. || liefert eben einen boolschen Wert, 1 oder 0.
Die Tücke hier sind das Prä- und das Postinkrement.int j,i; i=0; j=-1; j=++j || i++; // j wird erhöht und dann ausgewertet, i wird ausgewertet und dann erhöht // j = 0 || 0; // -> j = 0; // -> i ist jetzt aber 1 (!)
Vielleicht eine kleine Stütze:
Postinkrement: „holen” und anschließend erhöhen.
Präinkrement: erhöhen und anschließend „holen”.
-
yahendrik schrieb:
|| liefert eben einen boolschen Wert, 1 oder 0.
0 und 1 sind integer, boolsche Werte wären true und false. Der Vollständigkeit halber müsste also auch noch auf die hier auftretenden Konvertierungen eingegangen werden.
-
Stimmt camper, du hast natürlich recht.
-
jo perfekt
danke euch