Forum: Programmieren allgemein
by Die Muhkuh,
19. Dez 2007
Hmm, kann ich dir jetzt nicht helfen, würde es aber mal so tippen:
*j=&i;
i += ++i**j;
i = i + ++i **j;
i = 2 + 2 * 2;
i = 6
Was kommt den raus?
Forum: Programmieren allgemein
by Die Muhkuh,
19. Dez 2007
Hier für j:
// Ausgangrechnung
i += ++i+ i++;
// Wieder das += umsetzen
i = i + ++i + i++;
// i inkrementieren (i = 2 jetzt)
i = i + i + i++;
Forum: Programmieren allgemein
by Die Muhkuh,
19. Dez 2007
Nein, stimmt schon:
// Ausgangsberechnung:
i += ++i + ++i;
// Erstmal das += umstellen
i = i + ++i + ++i;
// jetzt i zweimal inkrementieren (dann ist i = 3)
i = i + i + i;
Forum: Programmieren allgemein
by Die Muhkuh,
19. Dez 2007
Nunja, wenn man in C++ die Aufgabe aufspaltet:
++i // i =2
++i // i =3
i = i + i + i; // i = 3 + 3 + 3
Es ist schon "logisch", was passiert:
Forum: Programmieren allgemein
by Die Muhkuh,
19. Dez 2007
Würd ich ja gerne machen, nur Java spuckt mir 6 aus und C++ spuckt mir, wie im Beispiel, 9 aus.
Forum: Programmieren allgemein
by Die Muhkuh,
19. Dez 2007
Ja, das ist soweit korrekt. Die Frage ist nur, warum berechnet Java das anders?
@ Deflef, ich tippe es nebenher in Java ein ;-)
Forum: Programmieren allgemein
by Die Muhkuh,
19. Dez 2007
Das heißt, dass
i = i + i++;
in C++ anders als in Java berechnet wird?!
Forum: Programmieren allgemein
by Die Muhkuh,
19. Dez 2007
ok, es kommt 8 raus :mrgreen:
public void init() {
int i = 4;
i = i + i++;
System.out.println(i); // -> i = 8
}
Das ist zwar in Java, aber wird in C auch so sein.
Forum: Programmieren allgemein
by Die Muhkuh,
19. Dez 2007
Japp, man muss ja schon bei den Beispielen von Sebastian genau schauen (ich zumindest), damit man es richtig macht. :mrgreen:
Forum: Programmieren allgemein
by Die Muhkuh,
19. Dez 2007
Machen wir es etwas einfacher:
int Zahl1 = 5;
int Zahl2;
Zahl2 = ++Zahl1;
// -> Zahl2 = 6;
// -> Zahl1 = 6;