У меня проблема с решением этого упражнения. Язык не определен (это не C и не другой язык). Такие параметры, как:
y в функциях f;
z в функции m;
w в функциях k и h;
передаются по значению.
*
указывает умножение. Выражения выражаются слева направо.
{int x = 1;
int y = 1;
int z = 1;
inf f (int y) {
int m (int z) {
return z+x;};
y = m(z);
return y};
(int -> int) g ((int -> int)n){
int z = 3;
x=n(z);
int k(int w) {
return 4*w};
return k};
int h(int w) {
int x =1;
w=f(w)+z;
x=w+1;
return x};
{int x =5;
x=g(h)(x)+h(z);}
}
int -> int указывает, что я передаю значение функции int, и функции возвращают значение int.
Мой вопрос являются:
1) Если у меня есть область действия stati c, какое значение будет содержать переменную x после выполнения строки 21? И почему?
2) Если у меня есть динамическая область действия c, какое значение будет содержать переменную x после выполнения строки 21 с использованием глубокого связывания? И почему?
3) Если у меня есть динамическая область действия c, какое значение будет содержать переменную x после выполнения строки 21 с использованием поверхностного связывания? И почему?
4) Предполагая, что параметр y в функции f передается по ссылке, какое значение будет содержать переменную x после выполнения строки 21 с использованием stati c scope? И почему?
5) Предполагая, что параметр w в функции h передается по ссылке, какое значение будет содержать переменную x после выполнения строки 21 с использованием stati c scope? И почему?
6) Предполагая, что параметр z в функции m передается по ссылке, какое значение будет содержать переменную x после выполнения строки 21 с использованием stati c scope? А почему?