2016-12-16 3 views
-3

Ich kann diese Operation nicht verstehen. Was ist die Ausgabe des folgenden Codes? Ich habe versucht zu interpretieren, warum b zwei verschiedene Werte hat eine als b = 1 + 2 und die andere als b = 2, da a ++ gleich a = 1 + a, dann die Cout fragt nach ++ b, welche sollte es gleich, b = 2-1 oder b = 3-1 sein?C++ Operation zu verwirrend?

int a=3; 
int b=2; 
b=a++; 
cout<<++b; 

Ich weiß, dass die Antwort auf diese Frage 4 ist. Aber ich kann meinen Kopf nicht herumkommen.

+0

Zerlegen Sie es in die entsprechenden Teile auf die folgende Weise: 'int a = 3; // a ist momentan 3' 'int b = 2; // b ist momentan 2' 'b = a ++; // Post-Inkrement-Operator. Weisen Sie a zu b zu und inkrementieren Sie dann a (a = 4 jetzt) ​​' ' cout << ++ b; // Operator vor dem Inkrementieren.inkrementiere b um 1 und drucke dann das Ergebnis (4) ' – NooGuy

Antwort

4

Aber ich kann meinen Kopf nicht um es bekommen.

Wenn das passiert, können Sie versuchen, die Anweisungen/Ausdrücke zu vereinfachen.


Durch die Verwendung des Post-Inkrement-Operator,

b = a++; 

entspricht:

b = a; 
a = a+1; 

Durch die Verwendung der Pre-Inkrement-Operator,

cout<<++b; 

entspricht:

b = b+1; 
cout << b; 

Hoffe, dass es Sinn macht jetzt.

+1

Ja, das hat Sinn ergeben. Vielen Dank!! – dontbadick

0

warum b hat zwei verschiedene Werte

b nicht zwei verschiedene Werte hat. b, a, und alles andere, hat immer einen Wert, zu jeder gegebenen Zeit. Es kann zu verschiedenen Zeiten unterschiedliche Werte haben, aber es hat immer nur einen Wert zu einer bestimmten Zeit.

Da a 3 ist, dann gilt:

b=a++; 

Sets b bis 3, da die Post-Inkrement-Operation den Wert der a nachdem der Wert von a modifiziert in dem Ausdruck verwendet wird.

cout<<++b; 

Diese Ausgänge 4, weil der pre-increment Betrieb den Wert des b modifiziert, bevor es in dem Ausdruck verwendet wird. Da b mit 3 beginnt, wird es auf 4 erhöht und dann im Ausdruck verwendet.