编程论坛's Archiver

clangxing 发表于 2007-1-14 20:06

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

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

xu2000 发表于 2007-1-14 22:42

Delphi的编译默认的情况下是不作边界检查的。听说有办法能让它做边界检查。但我不知道。如果你查到麻烦告诉我一声。

clangxing 发表于 2007-1-18 21:08

<P>但是在下面这个测试程序中它会判断界限的问题:<BR><BR>program p17;<BR>type a=1..10;<BR>var b:a;<BR>begin<BR>b:=20;<BR>end.<BR><BR>编译时,出现错误提示:Error 76:constant out of range.<BR><BR><BR></P>

volte 发表于 2007-1-19 15:07

<P>子界多是用在静态的程序越界中。<BR>对于静态的程序越界,是可以判断的。<BR><BR>对于动态的,Delphi是按照基本类型越界来判断的。而不是按照子界类型来判断的!</P>

yeye55 发表于 2007-1-19 17:16

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

clangxing 发表于 2007-1-20 10:38

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

jack_lvzheng 发表于 2008-5-10 17:52

你的电脑有问题

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.