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
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)
%Vor%"i = i ++" bedeutet grob übersetzt
Ein anderes Beispiel:
Wenn wir die i = i++ + f1(i)
-Anweisung erweitern, erhalten wir etwas wie folgt
Ich denke, die Hauptschritte können wie oben zusammengefasst werden.
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 .
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%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 .
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