2013-10-15 16 views
6

Warum ist der Wert von int d 25 und nicht 26 nach dem Ausführen des folgenden Code-Snippets?Seltsame Antwort nach der Ausführung von n ++

int n = 20; 
int d = n++ + 5; 

Console.WriteLine(d); 
+5

möglich duplikat von [Was ist der Unterschied zwischen ++ i und i ++] (http://stackoverflow.com/questions/24853/what-is-the-difference-between-i-and -i) –

+0

Siehe auch: https://communities.coverity.com/blogs/development-testing-blog/2013/09/24/cc-and-c –

Antwort

10

n++ ist der "post-increment operator", der nur den Wert nach inkrementiert Der Anfangswert wurde in der umgebenden Expression verwendet.

Ihr Code entspricht:

int d = n + 5; 
n = n + 1; 

zu erhöhen, wird der Wert vor seinen Wert verwendet, verwenden ++n, die Pre-Inkrementoperator.

+1

+1 zum Ausbrechen der äquivalenten surgarless Syntax. –

3

Weil Sie ++n verwenden müssen den erhöhten Wert in diesem Ausdruck zu verwenden.

See, in dem Ausdrucksbaum ist es nicht n erhöht wird und dann in der Zugabe diesen Wert verwenden, da n++ den Wert von n gibt aber erhöht es für den nächsten Ausdruck verwendet.

Allerdings gibt ++n tatsächlich den inkrementierten Wert von n für diesen Ausdruck zurück.

Daher ergibt n++ + 525, während ++n + 526 ergibt.

2

n++ bedeutet, dass die ade nach der Operation ausgeführt wird, also wird zuerst d gleich n+5 und dann n wird angehoben werden.

2

Da n++ wird zuerst der Wert zuweisen und nach Beendigung der Iteration wird es, das ist der Grund, inkrementiert seinen 25

Daher geben,

int d= n++ + 5; 

als

interpretiert wird
int d = n + 5; 
+0

warum downvote ?????? – Neel

1

Deinetwegen verwenden Postfix

int d = n++ + 5; 

ausdrücken, wo Compiler ersten Wert d zuweisen, aber in den folgenden

int d = ++n + 5; 

Du hast d'wird s Wert 26

1

++: post Schritt Operator.

Das Ergebnis des Operators post fi x ++ ist der Wert des Operanden.Nachdem das Ergebnis erhalten wird, wird der Wert des Operanden

Daher inkrementiert

int d= n++ + 5; 

als

int d = n + 5; 

nach der Ausführung der oben interpretaion interpretiert wird. n wird um 1 inkrementiert.

Verwandte Themen