ich im Vergleich nur die nicht optimierte Assembler Ausgabe von gcc:
# cat while.c
int main() {
while(1) {};
return 0;
}
# cat forloop.c
int main() {
for (;;) { };
return 0;
}
Assembler Stellen Ausgabe:
# gcc -S while.c
# gcc -S forloop.c
Vergleichen Assembler-Dateien:
# diff forloop.s while.s
1c1
< .file "forloop.c"
---
> .file "while.c"
Wie Sie gibt es keine signifikanten Unterschiede zu sehen. Hier die Ausgabe ist
# 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
Zwar ist dies kein technischer Beweis dafür, dass sie gleich sind, würde ich sagen, dass es in 99,9% der Fälle ist.
Ich benutze immer während. Ich sehe keinen Sinn in einer so konstruierten for-Schleife. Das ist nur eine persönliche Vorliebe. (Es scheint mir zu fehlen Informationen, während die While-Schleife (für mich) ästhetisch ansprechend aussieht) – Tim
technisch ist die 1 in der Zeit eine Bedingung, die bei jeder Iteration getestet werden sollte. Ich glaube, dass alle gängigen Compiler schlau genug sind, um aus diesem einen Sprung zu machen, anstatt einen bedingten. Abgesehen davon sind sie alle gleich, außer für Stil. – falstro
Welche Endlosschleife ist schneller als die andere? – Anonym