Si consideri il seguente pseudocodice (lingua agnostico):Operatori di assegnazione composta, cosa succede se il valore viene modificato (nel frattempo)?
int f(reference int y) {
y++;
return 2;
}
int v = 1;
v += f(v);
Quando la funzione f
cambia y
(cioè v
), mentre la valutazione v += f(v)
, è il valore originale di v
"congelato" e le modifiche ai v
"perso"?
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
Cioè, lo stesso di _just incrementa il valore di v per la quantità sul lato destro_, giusto? – gremo
Direi "valutare il lato destro, quindi incrementare v in base al risultato". Il punto chiave qui è l'ordine di valutazione. – raina77ow
Bene, ho capito. Grazie per la tua risposta ed esempi dal vivo. – gremo