[求助]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> Delphi的编译默认的情况下是不作边界检查的。听说有办法能让它做边界检查。但我不知道。如果你查到麻烦告诉我一声。 <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> <P>子界多是用在静态的程序越界中。<BR>对于静态的程序越界,是可以判断的。<BR><BR>对于动态的,Delphi是按照基本类型越界来判断的。而不是按照子界类型来判断的!</P> 编译器会检查代码中不合理的地方,但在实际运行中的动态错误可就没人管了。 谢谢各位指点 ,现在有点明白了。 你的电脑有问题页:
[1]
