175 views
0 votes
0 votes

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 dynamic scoping and call by name parameter passing mechanism, the values printed by the above program are :
(A) 115, 220
(B) 25, 220
(C) 25, 15
(D) 115, 105

1 Answer

0 votes
0 votes
due to dynamic scoping the second  print will give 200+20 =220

and as per the first print by defintion of call  by name "the parameter is evaluated when it is used not when passed"  so x will be evaluted into the P(X) so it be x=10+5   then print(x+10) will be 25

so and will  be (B)

Related questions

0 votes
0 votes
1 answer
1
Debargha Mitra Roy asked 6 days ago
64 views
#include <stdio.h int main() { int a[3] = {1, 3, 5, 7, 9, 11}; int *ptr = a[0]; ptr += sizeof(int); printf("%d", *ptr); return 0; }(Assume size of int to be $2$ bytes.)T...
0 votes
0 votes
2 answers
3
Debargha Mitra Roy asked Apr 10
111 views
What is the output of the below code?#include <stdio.h void main() { static int var = 5; printf("%d ", var ); if (var) main(); }a. 1 2 3 4 5b. 1c. 5 4 3 2 1d. Error
1 votes
1 votes
1 answer
4
SSR17 asked Feb 29
253 views
#include <stdio.h int main() { int i = -1; int x = (unsigned char)i; printf("%d", x); return 0; }output is 255 , but please explain how