2016-05-23 7 views
1

las ich ein paar Post in Bezug auf unärer Operator: What is the Difference between postfix and unary and additive in java "C - C++" joke about postfix/prefix operation orderingWann genau passiert postfix unärer Operator?

Und ein paar mehr.

Allerdings verstehe ich immer noch nicht genau, wenn der Wert geändert wird.

Zum Beispiel:

int x = 1; 
x = x++; 
System.out.print("x = x++ ==> "); 
System.out.print(" x = " + x); 
System.out.println(); 

int x = 1; 
x = x++ + x++; 
System.out.print("x = x++ + x++ ==> "); 
System.out.print(" x = " + x); 
System.out.println(); 

Die Ausgabe lautet:

x = x++ ==> x = 1 
x = x++ + x++ ==> x = 3 

So im ersten Block x-x zugeordnet und danach erhöht, aber der Wert ist nie verwendet, sonst wäre der Ausgang x = 2 gewesen.

Im zweiten Block, wenn ich richtig verstehe, wird die erste x++ vor der Zuweisung ausgewertet und die zweite x++ wird danach ausgewertet, aber nie verwendet.

Wenn im zweiten Block sowohl x++ nach der Zuweisung ausgewertet, aber nie verwendet worden wäre, wäre der Ausgang x = 2. Wenn beide verwendet worden wären, wäre die Ausgabe x = 4 gewesen.

Meine IDE auch darauf hingewiesen, dass die erste x++ verwendet wird, aber die zweite nicht verwendet wird: enter image description here

So zu schließen - ich bin immer noch verwirrt darüber, wann und wie genau der Zuwachs erfolgt.

+1

sollten Sie lesen [W Hat ist x nach "x = x ++"?] (http://stackoverflow.com/questions/7911776/what-is-x-after-x-x). –

+0

@AndyTurner Ich habe es gelesen. Ich habe es nicht verstanden. – traveh

Antwort

3

Auf der Linie

x = x++ + x++; 

Unter der Annahme, x = 1 die ersten x++ gibt „1“ als Wert und dann erhöht er x bis 2. So im Allgemeinen, es den alten Wert zurück zu x zuweisen.

Die zweite x++ macht das gleiche; es gibt den Wert x zurück, der jetzt 2 ist, und erhöht nur dann seinen Wert auf 3 - dieser Wert wird nicht verwendet.

Ihr Code entspricht:

tmp = x; 
x = x + 1; 

tmp2 = x; 
x = x + 1; // not used 

x = tmp + tmp2; 

Links, die Ihnen helfen können:

Verwandte Themen