次の擬似コードを検討してください (言語に依存しません)。
int f(reference int y) {
y++;
return 2;
}
int v = 1;
v += f(v);
の評価中に関数f
が変化したときy
(つまり) 、元の値が「凍結」されて「失われた」に変化しますか?v
v += f(v)
v
v
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