你能確定我對下面的代碼答案:問題關於靜態和動態範圍界定問題
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
這是正確的嗎?
程序拒絕在此編譯。 Var塊在begin ..end內? sub2被稱爲聲明?做sub1();也不適合pascal,儘管大多數編譯器會接受它,但你的老師可能不會。什麼是print()? – 2011-04-02 15:38:17
上面的代碼不是有效的Pascal。當然你寫錯了。 – 2011-04-02 18:11:16
我同意關於使用錯誤的語法結構的意見,但我認爲這個問題本質上比理論更實際。這個例子很明顯,雖然在語法上是不正確的(但是,那個頭上可能有某種免責聲明)。 – 2011-04-03 20:32:31