Dieses wurde doch garnicht bezweifelt?
Es wurde nur gesagt, daß die "Optimierung" das Programm-Verhalten nicht verändert,
wie du es (so klingt es zumindestens) ständig behauptest.
Und das ist bisher nirgendwo nachgewiesen wurden.
Fazit:
- intern kann sich die Zählreihenfolge mal verändern
- aber dennoch wird an der Arbeitsweise und dem Ergebnis des Programms nix verändert.
PS: Diese Optimierung muß nichtmal nur rückwärts zählen.
zählt von 6 auf 0 runter:
(natürlich nur in diesem Beispiel und mit Optimierung halbwegs garantiert)
Delphi-Quellcode:
var i, j: Integer;
begin
for i := 5 to 10 do
inc(j);
if j = 0 then ; // damit j nicht wegoptimiert wird
end;
zählt von -6 auf 0 rauf:
Delphi-Quellcode:
var i, j: Integer;
begin
for i := 10 downto 5 do
inc(j);
if j = 0 then ;
end;
Und falls deine Schleifenvariable nach der Schleife einen "unerwarteten" Wert aufweist ... daran bist'e selbser Schuld, da eine Schleifenvariable nur innerhalb der Schleife gültig ist, welches der Compiler (wie auch schon erwähnt wurde) melden sollte.