Post- und Pre-Increment-Operatoren

8

Wenn ich das folgende Beispiel benutze, bekomme ich die Ausgabe 0,2,1

%Vor%

Ich verstehe nicht, warum die Ausgabe 0,2,1 und nicht 0,2,2

ist     
ziggy 23.12.2011, 11:53
quelle

7 Antworten

3
%Vor%

i++ bedeutet i ist jetzt 2 . Der Aufruf f1(i) gibt 2 aus, gibt aber 0 zurück, so dass i=2 und j=0

zurückgegeben werden

vor diesem i = 1 , stellen Sie sich nun vor, dass f1() aufgerufen und durch 0 ersetzt wurde

so

%Vor%

jetzt wäre es

%Vor%

In einfacheren Worten (von hier @ Piotr)

  

"i = i ++" bedeutet grob übersetzt

%Vor%

Ein anderes Beispiel:

Jigar Joshi 23.12.2011, 11:58
quelle
5

Wenn wir die i = i++ + f1(i) -Anweisung erweitern, erhalten wir etwas wie folgt

%Vor%

Ich denke, die Hauptschritte können wie oben zusammengefasst werden.

    
melihcelik 23.12.2011 11:59
quelle
1

Die Lösung kann aus diesem Beispiel verstanden werden

%Vor%

Daher aus dieser Zeile,

%Vor%

Ihr i ist immer noch 1 und offensichtlich wird die Funktion 0 zurückgeben. Das ist wieder in i gespeichert und daher der Wert 1. Anstatt dass der aktualisierte Wert von i in i gespeichert wird, überschreiben Sie ihn durch den Zuweisungsoperator .

    
bragboy 23.12.2011 11:58
quelle
1

Im Post-Inkrement-Operator wird der Wert des Operanden nach der Verwendung erhöht. Beispiel

%Vor%

Zuerst wird k (Wert = 1) mit l zugewiesen, danach wird der k-Wert erhöht

Ähnliches passiert in der folgenden Zeile

%Vor%     
Sunil Kumar Sahoo 23.12.2011 12:11
quelle
1

Vorinkrement bedeutet: addiere eins zur Variable und gebe einen inkrementierten Wert zurück; Post increment - zuerst return i, dann inkrementiere es;

%Vor%     
abuduba 23.12.2011 12:09
quelle
1

Um zu vertiefen, müssen Sie Expression und seine Bewertungsreihenfolge

Hier ist wenig Erklärung über Gleichung i ++ + f1 (i) Bewertung

Im Equation Compiler get "i" Entspricht 1 und auf den Stack als erster Operand gesetzt und dann inkrementiert "i" , sein Wert wäre also 2 und berechnet den zweiten Operanden durch Aufrufen der Funktion, die zu diesem Zeitpunkt 0 wäre der Operation (+) Ausführungsoperanden wären 1 und 0 .

    
Imran 23.12.2011 12:44
quelle
1

Ich hoffe, diese Erklärung könnte helfen:

%Vor%

Versuche das

%Vor%

Kurz gesagt, während des Post-Inkrements wird der Ausdruck zuerst gelöst und dann wird der Wert inkrementiert. Aber im Pre-Inkrement wird der Wert zuerst inkrementiert und dann wird der Ausdruck gelöst.

Aber wenn du nur schreibst

%Vor%

Dann bedeutet beides dasselbe.

Grüße

    
nIcE cOw 23.12.2011 12:11
quelle

Tags und Links