Was bedeutet "for(;;)" bedeutet?
In C/C++, was bedeutet das Folgendes bedeuten?
for(;;){
...
}
Die forever-alone-Schleife.
Siehe auch stackoverflow.com/questions/4031636/... und stackoverflow.com/questions/2737550/what-does-for-mean-in-perl/... - ich habe Sie nicht gezählt, die als betrogene da Sie bist PHP - /Perl-aber ich wäre überrascht, wenn dies noch nicht vorher gefragt. Da ich jedoch nicht finden können, ein C-one, du bist sicher jetzt 🙂
Ich glaube nicht, ich wäre die erste person zu Fragen, aber ich habe versucht, die Suche, bevor ich fragte. Es gibt keine Schlüsselwörter zu suchen, und ich gebe zu, ich war ein bisschen faul.
kein problem, wir lieben diese Art von Fragen! es ist ein Rennen, um die Antwort-Taste
Ich schlage vor, für(;"je";) { code }
Siehe auch stackoverflow.com/questions/4031636/... und stackoverflow.com/questions/2737550/what-does-for-mean-in-perl/... - ich habe Sie nicht gezählt, die als betrogene da Sie bist PHP - /Perl-aber ich wäre überrascht, wenn dies noch nicht vorher gefragt. Da ich jedoch nicht finden können, ein C-one, du bist sicher jetzt 🙂
Ich glaube nicht, ich wäre die erste person zu Fragen, aber ich habe versucht, die Suche, bevor ich fragte. Es gibt keine Schlüsselwörter zu suchen, und ich gebe zu, ich war ein bisschen faul.
kein problem, wir lieben diese Art von Fragen! es ist ein Rennen, um die Antwort-Taste
Ich schlage vor, für(;"je";) { code }
InformationsquelleAutor sas4740 | 2011-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eine unendliche Schleife, entspricht
while(true)
. Wenn keine Abbruchbedingung vorhanden ist, die Bedingung standardmäßigtrue
.for(;;)
stattwhile(true)
ist, da einige Compiler wird eine Warnung ausgeben, die für die Konstante boolean-Ausdruck inwhile(true)
. Zum Beispiel, Visual C++ gibt mir eine "Warnung C4127: bedingter-Ausdruck-Konstante" mitwhile(true)
.Aber es ist genau das gleiche in Bezug auf Funktionalität.
silico: Es ist auch vier Zeichen kürzer, wenn Sie die ganze Golf Sache.
Ein weiterer Grund ist, glaube ich, einige Leute denken, es ist besser lesbar.
Morgan: Es gibt eine Stack Overflow Frage, die sich auf
for(;;)
vs.while(true)
mit Bezug auf die Visual C++ - compiler.InformationsquelleAutor Justin Ardini
In C und C++ (und einigen anderen Sprachen auch), die
for
- Schleife hat drei Teile:Beispiel:
addieren der zahlen von 1 bis 10 inklusive.
Es ist in etwa äquivalent zu den folgenden:
Jedoch nichts erfordert, dass die Abschnitte in einer
for
Anweisung tatsächlich enthalten nichts und, wenn die iteration eine Bedingung fehlt, wird davon ausgegangen, um wahr zu sein.Also die
for(;;)
Schleife im Grunde nur bedeutet:In anderen Worten, es ist eine unendliche Schleife.
InformationsquelleAutor paxdiablo
Schleife, bis einige
break
,exit
,throw
etc. Anweisung innerhalb der Schleife ausgeführt wird. Im Grunde kann man darüber nachdenken, einefor
Schleife, bestehend aus:Wenn der "test" ist leer, es ist als
true
, und die Schleife läuft weiter. Leeren "setup" und "advance" einfach nichts zu tun.InformationsquelleAutor Tony Delroy
Unendliche Schleife, die fortgesetzt, bis es eine Pause () -, exit() oder goto-Anweisung.
InformationsquelleAutor bhasinusc
Selbst wenn diese Antwort deutet darauf hin, dass beide Konstrukte sind gleichwertig, es gibt einen subtilen Unterschied zwischen den beiden
for(;;)
undwhile(1)
(das erstellen von Endlosschleifen) in der Sprache C (und möglicherweise auch compiler-abhängig).Einige Compiler (Windriver DIABData zum Beispiel) beschweren sich über "Bedingung ist immer wahr", wenn Sie
while(1)
.Wechsel zu
for(;;)
können, um loszuwerden die Warnung, wahrscheinlich, weil der letztere Ausdruck ist semantisch stärker, um eine unendliche Schleife auf Zweck, und es gibt kein "immer " true" - Bedingung (plus, es ist kürzer zu schreiben).[stmt.for]
ausdrücklich, dass Eine fehlende Bedingung macht die implizitewhile
- Klausel entsprichtwhile(true)
undfor ( for-init-statement condition opt ; expression opt ) statement
ist äquivalent zu{ for-init-statement while ( condition ) { statement expression ; } }
. In Summe haben wirfor(;;)
entsprichtwhile(true)
. Da du geschrieben hastwhile(1)
kann dies nur gilt fürC
, nichtC++
?guter Punkt. Ich habe bearbeitet Sie meine Antwort, damit das mit C
InformationsquelleAutor Jean-François Fabre