首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fpc运行时错误201

fpc运行时错误201
EN

Stack Overflow用户
提问于 2013-12-01 18:49:16
回答 2查看 8.9K关注 0票数 0

我一直在写一个关于猜测数字的游戏,我必须把一个4位数的数字分离成它的数字,然后把它放入一个array.However中--这个部分一直给我使用fpc.However的运行时错误201,当我使用ideone.com时,它给了我我想要的东西。我无法理解它是一个bug?对不起,我的英语。

代码语言:javascript
复制
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.

编辑:我为马尔科·范德沃特解决了problem.Thanks问题。

代码语言:javascript
复制
repeat
      z := z * 10;
      j := j - 1;
until j = 1;

我把这部分改成了这个。

代码语言:javascript
复制
while j > 1 do begin
 z := z * 10;
     j := j - 1;
end;    
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-03 11:54:26

  1. 在for循环之后,J总是1。
  2. 然后,在重复循环中,它被减少(到j=0)。
  3. 不等于1,所以它再次下降到-1,直到-32768,然后翻到32767。
  4. 然后再以32767比1。

总之,重复是65536 +/-1次。从代码中我不清楚J变量的含义。评论更多。

票数 1
EN

Stack Overflow用户

发布于 2013-12-01 19:56:21

运行时错误201是一个范围检查错误。

使用-gl编译,您将看到程序在运行时错误中崩溃的位置。它是第16行(z := z * 10;),这意味着您的z正在溢出。请注意,integer是FPC中有符号的16位类型(最大2^15-1= 32767)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20315852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档