最近在学习pascal ,看到子界章篇。测试了个程序,有点疑问。测试程序:program p16;type a=1..10;var t:a;beginreadln(t);writeln('t=',t);end.程序运后我输入20,输出为t=20;我的疑问是:20超出1..10的界限了,为什么不会报错?
但是在下面这个测试程序中它会判断界限的问题:program p17;type a=1..10;var b:a;beginb:=20;end.编译时,出现错误提示:Error 76:constant out of range.
子界多是用在静态的程序越界中。对于静态的程序越界,是可以判断的。对于动态的,Delphi是按照基本类型越界来判断的。而不是按照子界类型来判断的!