Warum nicht `index = index ++` `Zuwachs index`?

stimmen
0

** Dup: Was ist der Unterschied zwischen X = X ++ ist; vs X ++ ;? **

Also, auch wenn ich weiß, Sie würden nie wirklich dies in Code, ich bin immer noch neugierig:

public static void main(String[] args) {
    int index = 0;
    System.out.println(index);   // 0
    index++;
    System.out.println(index);   // 1
    index = index++;
    System.out.println(index);   // 1
    System.out.println(index++); // 1
    System.out.println(index);   // 2
}

Beachten Sie, dass die dritte sysoutnoch ist 1. In meinem Kopf die Linie index = index++;bedeutet „Index Index gesetzt, dann Indexinkrement von 1“ in der gleichen Art und Weise System.out.println(index++);bedeutet „Index für die println Methode übergeben dann Indexinkrement von 1“.

Dies ist jedoch nicht der Fall. Kann mir jemand erklären, was los ist?

Veröffentlicht am 09/12/2008 um 23:00
quelle vom benutzer
In anderen Sprachen...                            


8 antworten

stimmen
4

dies ist eine doppelte Frage.

EDIT: Ich kann nicht scheinen zu finden , das Original: P oh well

a = a ++ verwendet den Postinkrement, die der Compiler als interpretiert:

a = function() {
   var old_value = a;
   a++;
   return old_value;
}

EDIT 2: Was ist der Unterschied zwischen X = X ++; vs X ++ ;?

Beantwortet am 09/12/2008 um 23:01
quelle vom benutzer

stimmen
3

value++; ist Post Schritt.

int firtValue = 9;
int secondValue = firstValue++;

firstvalue ist jetzt 10, aber second 9, der Wert von firstvalue, bevor er erhöht wurde.

Jetzt mit Pre-Schritt:

int firtValue = 9;
int secondValue = ++firstValue;

firstvalue und second sind jetzt 10, fistValue inkrementiert wird, und dann wird dessen Wert auf second asigned.

Beantwortet am 09/12/2008 um 23:04
quelle vom benutzer

stimmen
1

Ich habe nie versucht, etwas Ähnliches, aber ich bin bereit zu sein, dass die Zuordnung nach dem Zuwachs passiert.

Also, was wirklich so weit wie der Compiler passiert ist besorgt ist:

  1. bewerten Sie Index
  2. Halten Sie den Wert des Index für später
  3. Erhöhen Sie den Wert des Index
  4. Weisen Sie den alten Wert des Index, so wischen den Zuwachs aus.
Beantwortet am 09/12/2008 um 23:05
quelle vom benutzer

stimmen
1

Der Post-Inkrement - Operator index++erhöht die Variable, noch gibt seinen alten Wert, so

int i = 5;
System.out.println(i++);

drucken 5 noch i jetzt gleich 6.

wenn Sie den Wert nach der Inkrementbetrieb Verwendung zurückzukehren ++index

Beantwortet am 09/12/2008 um 23:04
quelle vom benutzer

stimmen
1

Die Zuordnung erfolgt nach dem Ausdruck ausgewertet wurde. So Index ++ hat einen Wert von 0, obwohl sie als ein Nebeneffekt Index erhöht wird. Dann wird der Wert (0) mit Index zugeordnet.

Beantwortet am 09/12/2008 um 23:02
quelle vom benutzer

stimmen
0

Sie haben bei der Bestellung suchen Dinge ausgewertet werden.

in der folgenden Aussage

index = index ++;

passieren drei Dinge 1), da es Index ++, wird der Wert des Index 2) bestimmten Index inkrementiert wird, 3) der Wert, den man in Schritt bestimmt wurde dann auf die Variable auf der linken Seite der Gleichung zugeordnet ist

Beantwortet am 09/12/2008 um 23:06
quelle vom benutzer

Beantwortet am 09/12/2008 um 23:06
quelle vom benutzer

stimmen
-1

Die Antwort auf diese Frage soll helfen. Die Post Schritt macht den Wert des Index aktualisieren , aber es gibt den Wert vor der Aktualisierung.

Beantwortet am 09/12/2008 um 23:04
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more