所以我有这个问题,我必须使用两个不同的范围规则来计算输出。我知道使用词法作用域的输出是a=3
and b=1
,但是我很难用动态作用域来计算输出。
注意:下面的代码示例使用 C 语法,但我们将其视为伪代码。
int a,b;
int p() {
int a, p;
a = 0; b = 1; p = 2;
return p;
}
void print() {
printf("%d\n%d\n",a,b);
}
void q () {
int b;
a = 3; b = 4;
print();
}
main() {
a = p();
q();
}
这是我想出的。a
使用动态范围,对和的非本地引用b
可以更改。所以我有a=2
(从 p() 返回),然后是b=4
(在 q() 内)。所以输出是2 4
?