C++ Tutorial

for Schleife

Die for-Schleife. Sie wird hauptsächlich eingesetzt, wenn vor dem Eintritt in die Schleife bekannt ist, wie oft Anweisungen wiederholt auszuführen sind.

Syntax

Die for-Schleife hat folgende Syntax:

for (AUSRUCK1; AUSDRUCK2; AUSDRUCK3)
    ANWEISUNG;

Die drei Ausdrücke in der Klammer werden jeweils durch ein Semikolon getrennt und das abschließende Semikolon folgt erst nach der auszuführenden Anweisung.

Initialisierungsausdruck

Der erste Ausdruck AUSDRUCK1 ist der Initialisierungsausdruck. Er wird nur einmal ausgeführt, und zwar bevor die Anweisung in der Schleife das erste Mal ausgeführt wird. Im Regelfall initialisiert er einen Schleifenzähler, d.h., er legt den Startwert fest, mit dem die Schleife begonnen wird.

for (auto index=0; ... ; ...)
   ANWEISUNG;

Eine im Initialisierungsausdruck definierte Variable ist nur in der Schleife gültig.

Der Initialisierungsausdruck kann aus mehreren Anweisungen bestehen. Die Anweisungen werden dann durch Kommas getrennt aufgelistet. Selbstverständlich muss die Variable count in der folgenden Anweisung vorher definiert worden sein.

for (count=10, auto index=0; ... ; ...)
   ANWEISUNG;

Abbruchbedingung

Der nächste Ausdruck AUSDRUCK2 legt die Abbruchbedingung der Schleife fest. Die Schleife wird so lange durchlaufen, wie die Auswertung des Ausdrucks true ergibt.

for (auto index=0; index<10; ...)
    ANWEISUNG;

Die Abbruchbedingung kann aus mehreren Bedingungen bestehen, die durch logische Operatoren verknüpft werden. Im nachfolgenden Beispiel wird die erste for-Schleife so lange durchlaufen, solange index kleiner 10 und done gleich false ist. Die zweite for-Schleife enthält eine 'hinterlistige' Falle: Hier werden die Ergebnisse der beiden Ausdrücke bitweise verundet, und dies ist etwas anderes wie eine logische Verundung. Der Compiler meldet hier keinen Fehler, höchsten eine Warnung.

1: for (auto index=0, auto done=false; (index<10) && (!done); ...)
2:       ANWEISUNG;
3: // Aber nie so!
4: for (auto index=0, auto done=false; (index<10) & (!done); ...)
5:       ANWEISUNG;

Schleifenaktion

Der letzte Ausdruck AUSDRUCK3 in der Schleifenklammer legt die Aktion fest, die nach dem Ausführen der Schleifenanweisung und vor dem Auswerten der Abbruchbedingung ausgeführt wird.

for (auto index=0; index<10; index++)
    ANWEISUNG;

In der Regel wird hier die im ersten Ausdruck initialisierte Schleifenvariable verändert. Auch dieser Ausdruck kann aus mehreren Anweisungen bestehen, die wieder durch Kommas getrennt aufgelistet werden. Der Lesbarkeit wegen sollte nur die Schleifenvariable verändert werden und alles andere in der, im Anschluss beschriebenen, Schleifenanweisung durchgeführt werden.

Jeder der 3 Ausdrücke, Schleifeninitialisierung, Abbruchbedingung und Schleifenaktion, ist optional, jedoch sind die beiden Semikolon innerhalb der Klammer immer anzugeben. Eine for-Schleife ohne Abbruchbedingung und 'Notausgang' erzeugt eine Endlos-Schleife.

for (AUSDRUCK1; ;AUSDRUCK3)
    ANWEISUNG;

Schleifenanweisung

Die Schleifenanweisung besteht standardmäßig aus einer Anweisung. Mehrere Anweisungen sind in einen Block {...} einzuschließen. Auch die Angabe einer Schleifenanweisung ist optional. Aus diesem Grund liefert die dritte for-Schleife im Beispiel (Zeile 13) beim Übersetzen keinen Fehler.

1: // Schleife mit einer Schleifenanweisung
2: for (auto index=0; index<10; index++)
3:     std::cout << std::format("Schleifenzähler: {}\n",index);
4:
5: // Schleife mit mehreren Schleifenanweisungen
6: for (auto index=0; index<10; index++)
7: {
8:     ... // Hier können jetzt mehrere
9:     ... // Anweisungen stehen
10: }
11:
12: // Aber Achtung! Leerschleife
13: for (auto index=0; index<10; index++);
14:    std::cout << "Schleife\n";

Copyright 2024 © Wolfgang Schröder
E-Mail mit Fragen oder Kommentaren zu dieser Website an: info@cpp-tutor.de
Impressum & Datenschutz