我在作业中弄错了这个问题,我不知道为什么:
procedure Main is
X: Integer;
procedure Sub1 is
X: Integer;
begin -- of Sub1
Put(X);
end; -- of Sub1
procedure Sub2 is
X: Integer;
begin -- of Sub2
X:=5;
Sub1;
end; -- of Sub2
begin -- of Main
X:=12;
Sub2;
end; -- of Main
问题是:假设以下 Ada 程序是使用静态范围规则编译和执行的。在 Sub1 的程序中打印 X 的什么值?如果它在动态范围规则下怎么办?
我分别得到了 12 和 5,但这被标记为不正确。为什么?