为什么循环 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 语句。