我一直在编写一个关于猜测数字的游戏,我必须将4位数字分成数字并将数字放入数组。但是该部分使用fpc继续给我运行时错误201.但是当我使用ideone.com时它给了我我想要的东西。我无法弄清楚它是不是一个错误?抱歉我的英语。
program game;
var
number : array [1..4] of integer;
z, i, j: integer;
number_4digit: integer;
begin
readln(number_4digit);
for i := 4 downto 1 do begin
j := i;
z := number_4digit;
while z > 10 do begin
z := z div 10;
end;
number[5-i] := z;
repeat
z := z * 10;
j := j - 1;
until j = 1;
number_4digit:= number_4digit - z;
write(number[5-i], ' ');
end;
end.
编辑:我解决了这个问题。感谢Marco van de Voort。
repeat
z := z * 10;
j := j - 1;
until j = 1;
我将此部分更改为此内容。
while j > 1 do begin
z := z * 10;
j := j - 1;
end;
答案 0 :(得分:2)
运行时错误201是范围检查错误。
使用-gl
进行编译,您将看到程序在运行时错误中崩溃的位置。它是第16行(z := z * 10;
),意味着您的z
溢出。请注意,integer
是FPC中带符号的16位类型(最大值为2 ^ 15 - 1 = 32767)。
答案 1 :(得分:1)
总之,重复完成65536 +/- 1次。从代码中我不清楚J变量的含义。评论更多。