Darf ich auch noch was dreckiges, unpraktisches und vor allem fehleranfälliges hinzufügen?
Delphi-Quellcode:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i: BYTE;
type
PBYTE = ^BYTE;
begin
for i := 1 to 20 do
begin
writeln(i);
PBYTE(@i)^ := PBYTE(@i)^ + 1
end;
ReadLn
end.
Man muss übel aufpassen, da ja im Hintergrund immer noch "i" inkrementiert wird!
Aber diese Variante verwendet sowieso keiner (sollte man ja auch nicht!)
Was mich verwundert, wenn man bedenkt, dass die "richtige" Zählvariable einer for-Schleife immer rückwärts gezählt wird, wieso hört diese Schleife (in meinem Beispiel) schon eher auf?
Merkt der Compiler, dass man über Pointer auf i zugreift und optimiert er den dann Code nicht?