Fehler in Java Lehrbuch? - Präinkrement

  • Antworten:5
  • Bentwortet
Ludwig H.
  • Forum-Beiträge: 3.256

28.03.2011, 19:36:47 via App

Hi,

ich brauch mal eure Hilfe! Ich bin nämlich der Meinung, dass ein Fehler in meinem Java Lehrbuch "Einstieg in Java" von Galileo Computing (von 2005) ist:

Müsste die Ausgabe nicht
1Höhe = 1 m
2Ergebnis = 2 m

sein?

lG
Ludwig

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

28.03.2011, 19:52:09 via Website

Hallo Ludwig,

nein wieso ..

Die Erklärung steht eh korrekt oben im Text oberhalb der Source.
1int height = 1;
2Log.d("Meine Zahlen","height: " +height); //das gibt im Log "height: 1" aus
3int result = ++height;
4Log.d("Meine Zahlen","height: " +height); //das gibt im Log "height: 2" aus
5Log.d("Meine Zahlen","result: " +result); //das gibt im Log "result: 2" aus

++ <-- das ist das Präinkrement welches vor einer entsprechenden Variable eingesetzt diese inkrementiert bevor irgend etwas anderes damit geschieht.

Das Buch hat schon Recht mit dem was es da behauptet :)

— geändert am 28.03.2011, 19:53:56

lg Voss

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

28.03.2011, 19:56:08 via App

Danke! Ich glaube jetzt hab ichs verstanden. Also wird erst bei "height" eins dazu gezählt und danach einfach height auf "result" "kopiert"?!
Aber warum so umständlich? Warum belässt man es nicht einfach bei "height", wenn "height" und "result" sowieso den selben Wert haben?

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

28.03.2011, 20:44:50 via Website

Oder, weil der Verfasser des Buches nicht genügend Fantasie hat, sich für jeden Code-Schnipsel eine dazu passende Geschichte auszudenken .... B)

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 294

28.03.2011, 21:26:56 via Website

Ist auch ein selten blödes Beispiel in dem Buch.

1height = 1;
2result = ++height;
3// --> result==2, --> height==2

1height = 1;
2result = height++;
3// --> result==1, height==2

In einer typischen for(i = 0, j = 0; i < 10, j < 10; i++, --j); Schleife spielt das keine Rolle, ansonsten ist der Unterschied gravierend.

Habe schon so viele in der Prä-Java Zeit darüber stolpern sehen. Hier ein paar typische und lustige Fallen:

1int i = 0;
2i = i++;
3i = i++;
4// Welchen Wert hat i?

1i = i;
2i = i++;
3i = i--;
4// Was unterscheided die drei Statements?

Spässle gemacht.
Harald

Antworten