Je viens par rapport à la sortie de l'assembleur unoptimized de gcc:
# cat while.c
int main() {
while(1) {};
return 0;
}
# cat forloop.c
int main() {
for (;;) { };
return 0;
}
Marque assembleur sortie:
# gcc -S while.c
# gcc -S forloop.c
Comparer les fichiers assembleur:
# diff forloop.s while.s
1c1
< .file "forloop.c"
---
> .file "while.c"
Comme vous pouvez le voir, il n'y a pas de différence significative. Voici la sortie
# cat while.s
.file "while.c"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
.L2:
jmp .L2 # this is the loop in both cases
.size main, .-main
.ident "GCC: (GNU) 4.4.3"
.section .note.GNU-stack,"",@progbits
Bien que ce n'est pas une preuve technique qu'ils sont les mêmes, je dirais qu'il est dans 99,9% des cas.
J'utilise toujours while. Je ne vois aucun point dans une boucle for construite de cette manière. C'est juste une préférence personnelle. (Il me semble qu'il manque des informations, alors que la boucle while me semble plus esthétique) – Tim
techniquement, le 1 dans le temps est une condition qui devrait être testée à chaque itération. Je crois que tous les compilateurs communs sont assez intelligents pour faire un saut de celui-là plutôt que conditionnel. En dehors de cela, ils sont tous équivalents sauf pour le style. – falstro
Quelle boucle infinie est plus rapide que l'autre? – Anonym