当我使用这 2 个 FOR 初始化二维向量/数组时遇到问题:我定义了这些类型:
type
Range9 = 0..8;
Digit = '0'..'9';
Board = array [Range9,Range9] of Digit;
然后 FOR 存在问题的代码部分如下:
var
i : Range9;
j : Range9;
table : Board;
BEGIN
for i:=0 to 8 do begin
for j:=0 to 8 do begin
table[i,j] := '0'
end
end;
END.
现在的问题是,当我调试这部分代码时,出于某种原因,我的i
变量在不应该修改的时候被修改了。
例如,我有一个手表i
,j
如果我在行中放置一个断点,table[i,j] := 0
我会看到这些值:
i j
0 0
256 1
512 2
768 3
1024 4
1280 5
1536 6
1792 7
2048 8
2049 8
1 0
257 1
513 2
769 3
等等...
因此,当程序进入第二个 for(增加 的那个j
)时,我i
的间隔增加了 256 ......我真的不知道为什么会发生这种情况。
我发现的另一件事是,如果我更改i
变量的类型,问题就解决了。如果在 VAR 部分中我放置i : integer
了i : Range9
, ,i
则在不应该修改时不会被修改。
如果有人向我解释为什么会发生这种情况,我将不胜感激。