Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#7

AW: For-To-Do-Schleife beginnt nicht mit Startwert

  Alt 29. Okt 2014, 13:48
Na indem ich bei der ersten Zeile zwischen begin-end einen Breakpoint setzen und mir im Debugger den Wert anschaue.
Das ist dein "Problem" in Anführungszeichen

Du nutzt i nicht in der Schleife, also ist es für den weiteren Programmablauf egal wie der Wert von i ist. Und weil es egal ist, sagt sich der Compiler, dass es für ihn optimaler ist mit dem höheren Wert zu beginnen und runter zu zählen.

Wie gesagt, diesen Effekt hast du nur, weil der Wert von i nicht benötigt wird. Es ist also egal ob For rauf oder runter zählt.

Anders sieht es aber aus wenn du den i-Wert benötigst. Dann wird so gezählt wie es soll. Du kannst es testen:
Delphi-Quellcode:
var i, MaxZahl : Byte;
begin
  MaxZahl:=20;
  for i:=1 to MaxZahl do
  begin
    ShowMessage(IntToStr(i));
  end;
end;
Lass es laufen. Du wirst sehen, es beginnt bei 1.

Also, dein Phänomen tritt nur dann auf wenn es egal ist. Ist es egal, macht der Compiler das was für ihn optimaler ist. Ist es nicht egal, wird es so gemacht wie du es willst.
  Mit Zitat antworten Zitat