Direction: The following program fragment is written in a progrmming language that allows global variable and does not allow nested declrations 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
-
- 115, 220
- 25,220
- 25,15
- 115, 105
- 115, 220
Correct Option: D
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 & 105 will be printed.
Hence (d) is correct option.