如何在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
编译
我有一个大问题,因为这段代码在 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
编译