meckerziege schrieb:
> Darfst du denn überhaupt die Reihenfolge des Durchlaufs umdrehen? Was
> macht denn function(.)?
Die Reihenfolge der Funktionsaufrufe darf er normalerweise nicht
umdrehen (Ausnahmen siehe z.B. meckerziege, oder bei Inlining). Die
Werteabfolge einer Zählvariablen hingegen schon, wenn das keine
Auswirkung auf die Reihenfolge der Funktionsaufrufe oder anderen Code
hat, weil er für das Array eine andere Lösung hat. Ebenso kann er die
Zählvariable selbst komplett eliminieren.
Der Code im Startbeitrag ist eine klassische Zählschleife mit Verwendung
als Index. Ein guter Compiler wird darin erkennen, dass die Schleife 14x
ausgeführt wird und das Array aufsteigend ab 0 indiziert wird. Wie er
das dann implementiert ist allein seine Sache, da die Zählvariable
nirgends sonst verwendet wird (wobei ich annehme, sie ist lokal
definiert, nicht global).
Daumenregel: Wenn als Ergebnis von erzeugten Code das rauskommt, was
unter Anwendung der Regeln von C rauskommen darf, darf er machen was er
will. Wobei mit und ohne Optimierung auch verschiedene Ergebnisse
rauskommen dürfen, wenn beide in diesem Sinn zulässig sind.