关于静态和动态范围问题的问题

您能否确认我对以下代码的回答:
procedure main
var x,y,z;

    procedure sub1
       begin
        var x,z 
        x := 6;
        z := 7;
        sub2();
        x := y*z + x;
        print(x);       
      end
    procedure sub2
      begin
        var x,y
        x := 1;
        y := x+z+2;
        print(y);       
      end
begin
    x := 1; y:=3; z:=5;
    sub1();
    sub2();
end 
我有: 静态的:
8
27
动态:
10
27
那是对的吗?     
已邀请:
如果Pascal支持动态范围,那么就你的分析而言,你的分析是正确的。在
sub1
中声明的
z
变量将影响在
main
中声明的变量,即使在
sub2
内也是如此。但是在
sub2
中声明的
x
不会影响
sub1
中声明的
x
的值,所以
sub1
在调用
sub2
后读取
x
时仍使用原值6。 但是,您的分析不完整。每次应打印三个值,而不仅仅是两个。在这两种情况下,打印的第三个值应为8。     
我不知道静态与动态意味着什么。 Pascal总是在最里面的范围内使用变量。如果你使用它,那么结果是8,27。我不知道你是如何得到其他结果的(一切都是全球性的?)     

要回复问题请先登录注册