学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

[求助]pascal中子界类型问题

[求助]pascal中子界类型问题

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

TOP

Delphi的编译默认的情况下是不作边界检查的。听说有办法能让它做边界检查。但我不知道。如果你查到麻烦告诉我一声。
我会拿出我全部的钱财,以保你衣食无忧。我会献出我所有的智慧,以助你一帆风顺。我会想到所有的笑语,以令你展眉开颜。我会挤出最长的时间,以使你终生幸福。        [本人原创的结婚宣言]

TOP

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

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

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


TOP

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

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

大家都是朋友,有空就来坐坐!

TOP

编译器会检查代码中不合理的地方,但在实际运行中的动态错误可就没人管了。

TOP

谢谢各位指点 ,现在有点明白了。

TOP

你的电脑有问题

TOP

发新话题