2014-09-20 70 views
1

在具有作用域規則(如ALGOL)的語言中,允許在定義之前將值賦值給變量,即該聲明在其整個{block}內有效。例如,在Pascal和Java中(名稱空間和方法可見性)使用ALGOL作用域規則集。如下示例將打印42如果在定義變量之前分配一個值,會發生什麼情況? (ALGOL作用域規則集)

print i; 
int i = 42; 

但是,在下面的代碼片段中會發生什麼?

i = 21; 
print i; 
int i = 42; 

回答

1

這個問題不能從語言不可知的角度回答。這很可能甚至不能以特定於語言,編譯器不可知的視角來回答。行爲將由編譯器自己決定。

一個例子Algol-68 compiler將創建的符號對於i,然後迭代線通過特定的塊行,所以將打印21.

其他編譯器可以不同的方式處理這一點,從而導致錯誤,或42,但很可能與上面的例子類似。

相關問題