したがって、2 つの異なるスコープ ルールを使用して出力を把握する必要があるという問題があります。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
?