Considere el siguiente programa en un lenguaje de programación hipotético que permite variables globales y una elección de alcance estático o dinámico.
int i ; program main () { i = 10; call f(); } procedure f() { int i = 20; call g (); } procedure g () { print i; }
Sea x el valor impreso bajo el alcance estático y sea y el valor impreso bajo el alcance dinámico. Entonces, x e y son
(A) x = 10, y = 10
(B) x = 20, y = 10
(C) x = 10, y = 20
(D) x = 20, y = 20
Respuesta: (C )
Explicación: Ámbito estático:
int i ; program main () { i = 10; call f(); } procedure f() { int i = 20; call g (); } procedure g () { print i; //as i=20 is scoped only within f() so it will point to global i } So, 10 is printed Dynamic scoping: int i ; program main () { i = 10; call f(); } procedure f() { int i = 20; // here global scoped i is changed call g (); } procedure g () { print i; // global value changed so, i=20 printed }
Cuestionario de esta pregunta
Comente a continuación si encuentra algo incorrecto en la publicación anterior
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA