for
-Anweisung (C)
Mit der for
-Anweisung können Sie eine Anweisung oder eine Verbundanweisung so häufig wie angegeben wiederholen. Der Text einer for
-Anweisung wird nicht oder mehrmals ausgeführt, bis eine optionale Bedingung falsch ist. Sie können optionale Ausdrücke in der for
-Anweisung verwenden, um Werte während der Ausführung der for
-Anweisung zu initialisieren und zu ändern.
Syntax
iteration-statement
:
for
(
init-expression
opt ;
cond-expression
opt ;
loop-expression
opt )
statement
Eine for
-Anweisung wird wie folgt ausgeführt:
init-expression
wird ausgewertet, sofern vorhanden. Dadurch wird die Initialisierung für die Schleife angegeben. Für den Typ voninit-expression
besteht keine Einschränkung.cond-expression
wird ausgewertet, sofern vorhanden. Dieser Ausdruck muss einen arithmetischen Typ oder einen Zeigertyp aufweisen. Er wird vor den einzelnen Iterationen ausgewertet. Drei Ergebnisse sind möglich:Wenn
cond-expression
den Werttrue
(ungleich 0) aufweist, wirdstatement
ausgeführt. Anschließend wird ggf.loop-expression
ausgewertet.loop-expression
wird nach jeder Iterationen ausgewertet. Für den zugehörigen Typ besteht keine Einschränkung. Nebeneffekte werden in der Reihenfolge ausgeführt. Der Prozess beginnt anschließend erneut mit der Auswertung voncond-expression
.Wenn
cond-expression
weggelassen wird, giltcond-expression
dennoch als "true" und die Ausführung wird genau wie im vorherigen Absatz beschrieben fortgesetzt. Einefor
-Anweisung ohne eincond-expression
-Argument wird nur beendet, wenn einebreak
- oderreturn
-Anweisung innerhalb des Anweisungstexts ausgeführt wird, oder wenngoto
(eine Anweisung mit Bezeichnung außerhalb desfor
-Anweisungstexts) ausgeführt wird.Wenn
cond-expression
false
(0) ist, wird diefor
-Anweisung beendet und das Steuerelement an die nächste Anweisung im Programm weitergegeben.
Eine for
-Anweisung wird auch dann beendet, wenn eine break
-, goto
- oder return
-Anweisung innerhalb des Anweisungstexts ausgeführt wird. Eine continue
-Anweisung in einer for
-Schleife führt zur Auswertung von loop-expression
. Bei Ausführung einer break
-Anweisung innerhalb einer for
-Schleife wird loop-expression
weder ausgewertet noch ausgeführt. Diese Anweisung
for( ; ; )
ist die übliche Methode zum Erstellen einer Endlosschleife, die nur mit einer break
-, goto
- oder return
-Anweisung beendet werden kann.
Beispiel
In diesem Beispiel wird die for
-Anweisung veranschaulicht.
// c_for.c
int main()
{
char* line = "H e \tl\tlo World\0";
int space = 0;
int tab = 0;
int i;
int max = strlen(line);
for (i = 0; i < max; i++ )
{
if ( line[i] == ' ' )
{
space++;
}
if ( line[i] == '\t' )
{
tab++;
}
}
printf("Number of spaces: %i\n", space);
printf("Number of tabs: %i\n", tab);
return 0;
}
Output
Number of spaces: 4
Number of tabs: 2