Hola,
Se que no voy a poder aportar mucho al tema. Lo mío es más una duda.
Aparte de que esto se ve afectado por el optimizador de código, y como dice Al que el valor de i "poco se usa" y significado tiene a efectos del algoritmo (según lo poco que tengo entendido) ¿es posible que en última juegue el modo en como "traduce" el compilador las líneas?.
Yo me imagino, puesto que yo le escapo al assembler y niveles tan bajos, que internamente el compilador traduce a esas líneas como una instrucción del tipo "brinco si es cero"... no estoy totalmente seguro de como sería en inglés... ¿jump to zero"? Y creería que se basa en que alguna variable (o mejor dicho, registro
) va decrementando hasta llegar a cero lo cual hace que se salte a la siguiente rutina fuera del ciclo.
Saludos,