2012-02-23 2 views
1

をスコープ20、100は、静的および動的に私はこの問題に取り組んでいると私は答えを得た

は正しいでしょうか?

以下のプログラムをパスカルのような言語で考えてみましょう。 言語の出力はどのような静的スコープですか?言語が動的にスコープされている場合の出力は何ですか?

Program main; 
    x: integer; 
procedure f1(z: integer) 
begin 
     return z * x; 
    end 
procedure f2(z: integer) 
     int x; 
    begin 
     x = 2; 
     return f1(z) * x; 
    end 

begin /* main program */ 
    x = 5; 
print f1(4); 
    print f2(4); 
end 
+0

[静的対ダイナミックスコープ](0000000000)の可能な複製 –

+0

それは重複していない、それは別の質問です。 – nullException

答えて

2

なぜ両方のバージョンを試してみませんか?静的スコープでのPerlの使用:

my $x = 5; 
sub f1($) { 
    my $z = shift; 
    return $z * $x; 
} 
sub f2($) { 
    my $z = shift; 
    my $x = 2; 
    return f1($z) * $x; 
} 
print f1(4), "\n"; 
print f2(4), "\n"; 

私は2040を取得します。 (20(4 * 5) * 2である4 * 540である。)

動的範囲を取得するlocal Sですべてmy Sを取り付け、Iは2016を得ます。あなただけの結論を掲載するので(2016(4 * 2) * 2され、4 * 5ている。)

残念ながら、何の説明は、私はあなたが間違っていた場所を指摘することはできません。 。 。

関連する問題