我有这样一个问题,需要使用两种不同的作用域规则来确定输出。我知道使用词法作用域的输出是a=3
和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
?
p
)同名的变量。 - crashmstr