0
我有代码,其中我在新行上输入每个数字,直到我写0。我对数组的大小感到困惑。在开始我宣布A是索引1到5的数组。但是当我继续写入并放置超过5个数字时,它似乎仍然保存,然后在第二个循环中使用。这怎么可能?我想如果我用尽索引,我会得到一个错误。帕斯卡 - 阵列的大小
program testarray;
var hmez,
i:integer;
A:array [1..5] of integer;
begin
i:=0;
repeat
inc(i);
readln(A[i]);
if A[i]=0 then hmez:=i-1;
until A[i]=0;
for i:=1 to hmez do
writeln(A[i]);
end.
谢谢你,所以你建议打开范围检查,使我的程序正确? – cgnx 2014-11-04 18:04:51
您应该首先检查索引在您的代码中是否有效。编译器生成的范围检查是一个安全网。但是,是的,你一定要让它们随时打开。 – 2014-11-05 11:22:49
你的程序本质上不正确。转向范围检查不会引入正确性;它会让你明确知道这是不正确的。 – 2014-11-05 11:25:10