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。