0

次のコードに対する私の答えを確認できますか:

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
    

あれは正しいですか?

4

2 に答える 2

0

Pascal が動的スコープをサポートしていれば、分析は正しいものになります。で宣言されたz変数は、内であっても、 で宣言さsub1隠します。しかし、宣言された in宣言の値に影響を与えないため、を呼び出した後に読み取るときは元の値 6 を引き続き使用します。mainsub2xsub2xsub1sub1xsub2

しかし、あなたの分析は不完全です。2 つだけでなく、毎回3 つの値が出力されるはずです。表示される 3 番目の値は、どちらの場合も 8 である必要があります。

于 2011-04-05T17:33:23.890 に答える
-1

静的と動的の意味がわかりません。Pascal は常に最も内側のスコープで変数を使用します。それを使用すると、結果は 8,27 になります。どのようにして他の結果に至ったのかわかりません (すべてグローバル?)

于 2011-04-05T10:19:38.363 に答える