非法赋值的错误是什么?如何纠正


procedure tri_selection(t: tab; n: Integer);
var
i, j, min, aux: Integer;
begin
for i := 1 to n - 1 do
begin
min := i;
for j := i + 1 to n do
if t[j] < t[min] then
j := min;
if min <> i then
begin
aux := t[i];
t[i] := t[min];
t[min] := aux;
end;
end;
end;

这应该是一个正确的、众所周知的代码,可以从下到上排列整数,但编译器仍然坚持说";对循环"j"变量的非法赋值;。

怎么了?

问题就在这里:

for j := i + 1 to n do
if t[j] < t[min] then
j := min;                      // <-- Not allowed to assign to FOR loop variable j

不允许为for循环变量赋值。

也许你想写

for j := i + 1 to n do
if t[j] < t[min] then
min := j;

您在过程的标头中忘记了t之前的var

相关内容

  • 没有找到相关文章

最新更新