for-Schleife fehlt die Initialisierung
Ich habe gesehen,
for(;;)
und
for ( ; *s != '\0'; s++)
Warum ist es so leer wie die. Danke.
InformationsquelleAutor Matt | 2010-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe gesehen,
for(;;)
und
for ( ; *s != '\0'; s++)
Warum ist es so leer wie die. Danke.
InformationsquelleAutor Matt | 2010-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
for
- Anweisung funktioniert wie:for (initialization; test-condition; update)
Und einen oder alle drei können weggelassen werden (leer). Also:
for (;;)
ist eine Endlosschleife,1 entsprichtwhile (true)
weil es keine test-Bedingung. In der Tatfor (int i=0; ;i++)
wäre auch eine unendliche Schleife1.for ( ; *s != '\0'; s++)
ist eine Schleife ohne Initialisierung.s
auf den Anfang der (wahrscheinlich) einen string und erhöht, bis es erreicht die null-Zeichen'\0'
bezeichnet die end-of-string. Dies bedeutet im wesentlichen eine Schleife durch alle Zeichen des Stringss
1 Die Schleife wird immer noch unterbrochen werden, wenn es eine
break
- Anweisung in der Schleife, oder einen Anruf zuexit()
usw...\0
ist dieNUL
Charakter.NUL
undNULL
unterschiedlich sind.Einige Leute (wie ich) nenne es einfach die null
InformationsquelleAutor NullUserException
Es ist "leer", weil der Autor der code Links ist es leer. Der Autor hat nicht wollen/müssen, etwas zu tun in den entsprechenden Abschnitt des
for
- Anweisung, so war es leer.for (;;)
ist eine Aussage, die wiederholt auf unbestimmte Zeit (es sei denn, es wird unterbrochen, aus dem inneren Kreislauf Körper).for ( ; *s != '\0'; s++)
ist eine Aussage, die nicht braucht, einen initialization-Abschnitt, da alles notwendige (wie der anfängliche Werts
) war bereits initialisiert ist, bevor dasfor
- Anweisung.InformationsquelleAutor AnT
for(;;)
ist eine Endlosschleife. Es ist effektiv genau das gleiche wiewhile (true)
.Der Grund, warum dies funktioniert, weil, wenn die mittlere Zustand in einem
for
Schleife leer ist, wird es so interpretiert, dass Sie immer wahr ist.for ( ; *s != '\0'; s++)
wird verwendet für das Lesen von strings Zeichen für Zeichen. Dieser Ansatz funktioniert, weil jedes C-string endet mit einem null-Zeichen (\0
).InformationsquelleAutor Justin Ardini
Die Teile, die leer sind im wesentlichen nichts zu tun. So
for (;;)
erzeugt eine Endlosschleife, die nichts tut, und nie beendet, weil es keine Bedingung in der Schleife. Ihr zweites Beispiel:ist nur eine normale Schleife ohne Initialisierung Ausdruck. Dies beruht auf der Tatsache, dass
s
hat bereits einen ersten Wert und gerade Schleifen, bis er das Ende des Strings.InformationsquelleAutor casablanca
es bedeutet, dass immer
für die (erste Bedingung; Schrittweite; Ende-Bedingung); kann Man weglassen, diesen
Sehen http://en.wikipedia.org/wiki/For_loop
InformationsquelleAutor Mawg
while(1)
undwhile(true)
sind die gleichen wiefor(;;)
InformationsquelleAutor Vlasin