什么是非法分配错误以及如何纠正它?
What is that the Error of Illegal assignment and how to correct it?
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;
这应该是一个正确且众所周知的代码,用于从下到上排列整数,但编译器仍然坚持说“非法分配给 for 循环 '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
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;
这应该是一个正确且众所周知的代码,用于从下到上排列整数,但编译器仍然坚持说“非法分配给 for 循环 '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