Freigeben über


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-expressionopt ; cond-expressionopt ; loop-expressionopt ) statement

Eine for-Anweisung wird wie folgt ausgeführt:

  1. init-expression wird ausgewertet, sofern vorhanden. Dadurch wird die Initialisierung für die Schleife angegeben. Für den Typ von init-expression besteht keine Einschränkung.

  2. 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 Wert true (ungleich 0) aufweist, wird statement 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 von cond-expression.

    • Wenn cond-expression weggelassen wird, gilt cond-expression dennoch als "true" und die Ausführung wird genau wie im vorherigen Absatz beschrieben fortgesetzt. Eine for-Anweisung ohne ein cond-expression-Argument wird nur beendet, wenn eine break- oder return-Anweisung innerhalb des Anweisungstexts ausgeführt wird, oder wenn goto (eine Anweisung mit Bezeichnung außerhalb des for-Anweisungstexts) ausgeführt wird.

    • Wenn cond-expressionfalse (0) ist, wird die for-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

Siehe auch

Anweisungen