Multiple choice

The following program fragment is written in a programming language that allows global variables and does not allow nested declarations of functions. global int i = 100, j = 5; void P(x) { int i = 10; print(x + 10); i = 200; j = 20; print (x); } main() {P(i + j);}

If the programming language uses static scoping and call by need parameter passing mechanism, the values printed by the above program are

  1. 115, 220

  2. 25, 220

  3. 25, 15

  4. 115, 105

Reveal answer Fill a bubble to check yourself
D Correct answer
Explanation

In static scoping the variables are initialized at compile time only So i =100 & j =5 P(i + j) = P(100 + 5) = P(105)

So x =105 x + 10 = 105 + 10 = 115 So 115 and 105 will be printed