Alcance léxico vs alcance dinámico
Así que tengo este problema donde tengo que averiguar la salida usando dos reglas de alcance diferentes. Sé que la salida utilizando el alcance léxico esa=3
yb=1
, pero estoy teniendo dificultades para descifrar la salida utilizando el alcance dinámico.
Nota: el ejemplo de código que sigue utiliza la sintaxis de C, pero tratémoslo como un pseudocó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();
}
Aquí es lo que se me ocurre. Usando el alcance dinámico, las referencias no locales aa
yb
puede cambiar. Así que tengoa=2
(retorno de p ()), entoncesb=4
(dentro de q ()). Así que la salida es2 4
?