Program ConstTest;
Const constVar = 1;
Begin
constVar := 3;
WriteLn(constVar);
End.
Довольно очевидно, что вышеприведенный код не будет компилироваться, потому что это не так, чтобы изменить значение константы. Однако следующий код будет компилироваться и будет возвращать "1; 5; 3;", хотя массив является константой:
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.
Итак, что вызывает такое поведение? Почему константа не является константой?
Я использую FreePascal Compiler 2.2.0 для Win32.