Рубрики

ВОРОТА | GATE-CS-2001 | Вопрос 44

Рассмотрим следующую программу

Program P2 

    var n: int: 

     procedure W(var x: int) 

     begin 

         x=x+1

         print x;   

     end 

  

     procedure

     begin  

         var n: int; 

         n=3

         W(n);  

     end 

begin // beginP2

  n=10

  D; 

end 

Если язык имеет динамическую область видимости и параметры передаются по ссылке, что будет напечатано программой?
(А) 10
(Б) 11
(С) 3
(D) Ничего из вышеперечисленного

Ответ: (D)
Объяснение:

В статической области видимости или области видимости во время компиляции свободные переменные (переменные, используемые в функции, которые не являются ни локальными переменными, ни параметрами этой функции) называются глобальными переменными, поскольку при компиляции доступны только глобальные переменные.
В динамическом определении объема или времени выполнения свободные переменные называются переменными в самом последнем кадре стека вызовов функций. В данном коде в вызове функции процедуры W печатается локальная переменная x, т.е. 4. При динамическом определении объема, если бы x не было в процедуре W, мы бы ссылались на x функции в стеке вызовов функций, т.е. процедуру D и основная функция, но так как x — локальная переменная, а не свободная переменная, мы ссылались на локальную переменную, поэтому будет напечатано 4.

Рекомендуемые посты:

ВОРОТА | GATE-CS-2001 | Вопрос 44

0.00 (0%) 0 votes