考虑以下伪代码(与语言无关):
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