根据 ISO 帕斯卡标准,我无法找出该程序的正确行为。我尝试阅读 ISO 7185 标准文档,但没有找到关于该主题的任何内容。结果 4 或 24 应该是什么?
program Undetermined;
var
n: Integer;
function fact: Integer;
begin
fact := 1;
if n > 1 then
begin
n := n - 1;
fact := (n + 1) * fact
end
end;
begin
n := 4;
writeln( fact )
end.
编辑:我意识到我的示例中存在第二个问题。所以考虑新代码:
program Undefined;
var
n: Integer;
function power2: Integer;
begin
power2 := 1;
if n > 0 then
begin
n := n - 1;
power2 := 2 * power2
end
end;
begin
n := 4;
writeln( power2 )
end.
结果应该是 16 还是 2(根据我的编译器)?
编辑:如果他们没有解决我的问题,感谢回答事件。我终于在另一个论坛上得到了正确的答案:ISO 标准指定了我期望的行为,但我使用的编译器 (fpc) 在这一点上与默认设置不符合标准。