Escopo Lexical vs escopo dinâmico
Então eu tenho esse problema onde eu tenho que descobrir a saída usando duas regras de escopo diferentes. Eu sei que a saída usando o escopo léxico éa=3
eb=1
, mas estou tendo dificuldade em descobrir a saída usando o escopo dinâmico.
Nota: o exemplo de código a seguir usa a sintaxe C, mas vamos tratá-lo como pseudo-código.
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();
}
Aqui está o que eu invento. Usando o escopo Dinâmico, as referências não-locais aa
eb
pode mudar. Então eu tenhoa=2
(retorne de p ()), entãob=4
(dentro de q ()). Então a saída é2 4
?