Program ConstTest;
Const constVar = 1;
Begin
constVar := 3;
WriteLn(constVar);
End.
很明显,上面的代码不会编译,因为改变常量的值是不对的。但是,以下代码将编译,并返回“1; 5; 3;”,即使数组是 const:
Program ConstTest;
Const constArr:Array [1..3] Of ShortInt = (1,2,3);
Var i:ShortInt;
Begin
constArr[2] := 5;
For i:=1 To 3 Do WriteLn(constArr[i],'; ');
End.
那么,是什么导致了这种行为呢?为什么常数实际上不是常数?
我正在为 Win32 使用 FreePascal 编译器 2.2.0。