为什么循环 While with for inside 不起作用?
Why loop While with for inside doen't work?
我试图通过更改 for 循环内的 auxboolean
变量来打破 while 循环,但它不起作用。当 auxboolean
设置为 false
时,for 循环不会退出。为什么?
此外,for 循环似乎以 i
开始,值为 9 并向后计数。为什么?
auxboolean:= true;
while auxboolean do
begin
for i := 0 to 8 do
begin
auxboolean:=false;
end;
end;
在调试时你可以看到 i
的第一个值是 9 然后倒数:
while
循环继续的条件是 auxboolean = true
。
只有当代码returns到while
语句时才会执行auxboolean = true
的检查。循环内 auxboolean
发生的事情在该检查之前无效。
for
循环继续的条件是循环控制变量i
为0..8.
每个循环对 i
的检查同样发生一次,但对外部 while
循环没有影响。您可以使用 break
退出 for 循环。
编辑:
for
循环从 9 开始倒数的特殊性在
中有解释
我不确定 Delphi 的最新版本是否仍然如此。我认为是,但调试器没有显示递减的计数器值。
我想你想做这样的事情:
begin
auxboolean:=true;
for i := 0 to 8 do
begin
Writeln(i);
auxboolean:=false;
if not auxboolean then break;
end;
Writeln('End of the program...');
Readln;
end.
您不必使用 while 循环,而是使用 break 语句。
我试图通过更改 for 循环内的 auxboolean
变量来打破 while 循环,但它不起作用。当 auxboolean
设置为 false
时,for 循环不会退出。为什么?
此外,for 循环似乎以 i
开始,值为 9 并向后计数。为什么?
auxboolean:= true;
while auxboolean do
begin
for i := 0 to 8 do
begin
auxboolean:=false;
end;
end;
在调试时你可以看到 i
的第一个值是 9 然后倒数:
while
循环继续的条件是 auxboolean = true
。
只有当代码returns到while
语句时才会执行auxboolean = true
的检查。循环内 auxboolean
发生的事情在该检查之前无效。
for
循环继续的条件是循环控制变量i
为0..8.
每个循环对 i
的检查同样发生一次,但对外部 while
循环没有影响。您可以使用 break
退出 for 循环。
编辑:
for
循环从 9 开始倒数的特殊性在
我不确定 Delphi 的最新版本是否仍然如此。我认为是,但调试器没有显示递减的计数器值。
我想你想做这样的事情:
begin
auxboolean:=true;
for i := 0 to 8 do
begin
Writeln(i);
auxboolean:=false;
if not auxboolean then break;
end;
Writeln('End of the program...');
Readln;
end.
您不必使用 while 循环,而是使用 break 语句。