# GATE | Gate IT 2007 | Question 34

Consider the program below in a hypothetical programming language which allows global variables and a choice of static or dynamic scoping.

 `int` `i ; ` `program main () ` `{ ` `    ``i = 10; ` `    ``call f(); ` `} ` ` `  `procedure f() ` `{    ` `    ``int` `i = 20; ` `    ``call g (); ` `} ` `procedure g () ` `{    ` `    ``print i; ` `} `

Let x be the value printed under static scoping and y be the value printed under dynamic scoping. Then, x and y are
(A) x = 10, y = 10
(B) x = 20, y = 10
(C) x = 10, y = 20
(D) x = 20, y = 20

Explanation: Static scoping:

 `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 ` `}  `

Quiz of this Question
Please comment below if you find anything wrong in the above post

My Personal Notes arrow_drop_up
Article Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.