CSCI 3155, Quiz 2 20 minutes Consider the following code fragment: int j; void foo(int f) { int j; j = f + 1; print(j); /* print-1 */ bar() } void bar() { j = 20; } main() { j = 10; foo(10); print(j); /* print-2 */ } (i) What values will be printed out when using static scoping? [3 points] (ii) What values will be printed out when using dynamic scoping? [3 points] (iii) Let's suppose we rewrite bar as: void bar() { int j; j = 20; } What values will be printed out when using static scoping and dynamic scoping? Explain why these values are the same or differ from the values in (i) and (ii) [4 points]