标题:[求助]pascal中子界类型问题
只看楼主
clangxing
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-1-14
 问题点数:0 回复次数:6 
[求助]pascal中子界类型问题

最近在学习pascal ,看到子界章篇。测试了个程序,有点疑问。
测试程序:
program p16;
type a=1..10;
var t:a;
begin
readln(t);
writeln('t=',t);
end.
程序运后我输入20,输出为t=20;
我的疑问是:20超出1..10的界限了,为什么不会报错?

搜索更多相关主题的帖子: 中子 pascal 类型 疑问 
2007-01-14 20:06
xu2000
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:51
帖 子:3890
专家分:56
注 册:2006-4-8
得分:0 
Delphi的编译默认的情况下是不作边界检查的。听说有办法能让它做边界检查。但我不知道。如果你查到麻烦告诉我一声。

我会拿出我全部的钱财,以保你衣食无忧。我会献出我所有的智慧,以助你一帆风顺。我会想到所有的笑语,以令你展眉开颜。我会挤出最长的时间,以使你终生幸福。        [本人原创的结婚宣言]
2007-01-14 22:42
clangxing
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-1-14
得分:0 

但是在下面这个测试程序中它会判断界限的问题:

program p17;
type a=1..10;
var b:a;
begin
b:=20;
end.

编译时,出现错误提示:Error 76:constant out of range.


2007-01-18 21:08
volte
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:1167
专家分:1316
注 册:2004-12-19
得分:0 

子界多是用在静态的程序越界中。
对于静态的程序越界,是可以判断的。

对于动态的,Delphi是按照基本类型越界来判断的。而不是按照子界类型来判断的!


大家都是朋友,有空就来坐坐!
2007-01-19 15:07
yeye55
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:152
注 册:2007-1-19
得分:0 
编译器会检查代码中不合理的地方,但在实际运行中的动态错误可就没人管了。

我的百度空间→http://hi.baidu.com/yeye55
2007-01-19 17:16
clangxing
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-1-14
得分:0 
谢谢各位指点 ,现在有点明白了。
2007-01-20 10:38
jack_lvzheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:55
专家分:3
注 册:2007-9-22
得分:0 
你的电脑有问题
2008-05-10 17:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-115955-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.174015 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved