如何在for循环中增加计数器? (帕斯卡)

How to increment counter in for loop? (Pascal)

我有一个大问题,因为这段代码在 Dev-Pascal 中编译正确,但在 Lazarus 中编译不正确。

 for k:=1 to n do
     begin
          writeln(a[k]:4:2,'  ',a[k+1]:4:2,'  ',a[k+2]:4:2);
          inc(k,2);
     end;

我收到这条消息

Error: Illegal assignment to for-loop variable "k"

我现在应该做什么?我的程序中需要这个解决方案(增加 k 计数器)。

实际上,我认为这更像是 Dev-Pascal 让你逃脱惩罚的情况,而 FP 却没有。编译器通常不会让您在循环内修改 for 变量的原因是它可以破坏编译器生成的代码以确定何时达到上限 for 值。

添加一个局部变量 j,为其分配与 k 相同的起始值,在 for 循环内将其递增 2,并使用 j 作为数组索引器而不是 k.

Delphi不允许修改循环变量,TP可以。在其自身的模式中,FPC 遵循 Delphi,因为这是理智的做法,因为 MartynA 列出了阻碍优化的原因。

但是 FPC 确实允许它 在旧代码库的 Turbo Pascal 模式下,添加 {$mode tp} 或使用 -Mtp

编译