Rozważmy następujący pseudokod (język agnostycznego):Operatory przypisania złożonego, co się stanie, jeśli wartość zostanie zmieniona (w międzyczasie)?
int f(reference int y) {
y++;
return 2;
}
int v = 1;
v += f(v);
Gdy funkcja f
zmienia y
(czyli v
) podczas oceny v += f(v)
, to oryginalna wartość v
„zamrożone” i zmiany v
„stracone”?
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
Oznacza to, tak samo jak _zwięknij wartość v o ilość po prawej stronie, prawda? – gremo
Powiedziałbym, że "oceń właściwą stronę, a następnie zwiększ ją o jej wynik". Kluczową kwestią jest tutaj kolejność oceny. – raina77ow
Dobrze, rozumiesz. Dziękuję za odpowiedź i przykłady na żywo. – gremo