Betrachten Sie den folgenden Pseudo-Code (sprachunabhängig):Compound-Zuweisungsoperatoren, was passiert, wenn der Wert (in der Zwischenzeit) geändert wird?
int f(reference int y) {
y++;
return 2;
}
int v = 1;
v += f(v);
Wenn die Funktion f
y
ändert (dh v
), während v += f(v)
Auswertung ist der ursprüngliche Wert von v
„eingefroren“ und Änderungen an v
„verloren“?
v += f(v); // Compute the address of v (l-value)
// Evaluate v (1)
// Execute f(v), which returns 2
// Store 1 + 2
printf(v); // 3
Das heißt, genauso wie _just nur den Wert von v um die Menge auf der rechten Seite erhöhen, richtig? – gremo
Ich würde sagen, 'bewerten Sie die rechte Seite, dann erhöhen Sie v durch sein Ergebnis'. Der entscheidende Punkt ist hier die Reihenfolge der Auswertung. – raina77ow
Gut, habe den Punkt verstanden. Danke für deine Antwort und Live-Beispiele. – gremo