如果在定义变量之前分配值会发生什么? (ALGOL范围规则集)

时间:2014-09-20 16:48:40

标签: language-agnostic scope programming-languages

在具有范围规则的语言中,例如在ALGOL中,允许在变量定义之前为变量赋值,即声明在整个{block}内有效。例如,在Pascal和Java中使用ALGOL范围规则集(命名空间和方法可见性)。

以下示例将打印42

print i;
int i = 42;

但是下面的代码片段会发生什么?

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

1 个答案:

答案 0 :(得分:1)

这个问题无法从与语言无关的角度来回答。很有可能甚至无法用语言特定的,编译器无关的角度来回答这个问题。行为将由编译器本身确定。

示例Algol-68 compiler将为i创建符号,然后逐行遍历特定块,因此将打印21。

其他编译器可能会以不同方式处理此错误,导致错误或42,但很可能与上面的示例类似。

相关问题