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