我正在学习课程,但无法确定范围。每次解决时,答案都是不同的。
我找不到给出的答案并对其进行重新搜索,但无法理解。
program main;
var x, y, z : integer;
procedure sub1;
var a, y : integer;
begin{sub1}
a = x+z+10;
y = 100;
x = a+20;
end{sub1}
procedure sub2;
var a, x : integer;
procedure sub3;
var a, z : integer;
begin{sub3}
a = y
x = a+10;
z = 500;
call sub1;
y = x-z;
end{sub3}
begin{sub2}
a = 5;
call sub3;
z = z+x+100;
end{sub2}
begin{main}
x = 77;
y = 77;
z = x+y;
call sub2;
print x,y,z
end{main}
对于静态范围,结果应为:
261 -413 341
对于动态范围,结果应为:
77 117 871