wenn x = 3
und z nicht zugewiesen ist,
Warum berechnet z = x-- - --x
2?
Mein Professor hält gerade darüber Vorlesungen, und ich bin gerade mit diesem Dilemma beschäftigt. Leider kann niemand erklären, warum es passiert.
Hier ist die Reihenfolge der Operationen, illustriert zum besseren Verständnis:
-- prefix
bedeutet, dass die Dekrementierung vor der Auswertung des Ausdrucks erfolgt und postfix --
bedeutet, dass die Dekrementierung nach Auswertung des Ausdrucks erfolgt.
Ok, es ist ziemlich einfach:
Lassen Sie uns Klammern hinzufügen:
z = ( x-- ) - ( --x )
^^ So sieht der Compiler Ihren Code nach dem Tokening.
Der Compiler berechnet die Gleichung (rechter Teil) von links nach rechts
Jetzt,
x--
ist gleich POP der Wert von x und dekrementiert es dann und PUSH zurück Wert in einen Speicher. Ok, machen wir es:
Der aktuelle Wert von X ist 3, dekrementiert ist 2 - also erhalten wir in Gleichung 3, aber X wird den neuen Wert 2 enthalten.
--x
ist gleich Dekrement X-Wert und dann POP diesen Wert in die Gleichung. Lass es uns tun:
Der aktuelle Wert von X ist 2 (weil die vorherige Operation ihn dekrementiert hat), und jetzt wollen wir ihn noch einmal verringern. 2-1 = 1, verstanden.
Nun zurück zur ganzen Gleichung: z = (3) - (1) = 2
.
Tags und Links javascript c#