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.
編集:私の例には2番目の問題があることに気付きました。したがって、新しいコードを検討してください:
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)はデフォルト設定でその点の標準に準拠していません.