12.5 for

Die for-Schleife hat die Form
for( initialisierung; laufbedingung;reinitialisierung )anweisung
wobei anweisung eine einzelne Anweisung (mit Semikolon (;) beendet!) sein kann oder ein ganzer Block, der mit {} geklammert wird und aus beliebig vielen Anweisungen bestehen kann (hinter dem Block ist dann kein Semikolon (;) nötig).

Alles, was im Teil initialisierung steht, wird vor Beginn der Schleife ausgeführt. Man kann in C im Gegensatz zu anderen Sprachen auch mehrere Anweisungen angeben, die vor der Schleife ausgeführt werden sollen; die einzelnen Anweisungen sind dann mit Kommata (,) getrennt. Der Teil laufbedingung wird vor jedem Schleifendurchlauf ausgeführt und geprüft, ob er den Wert wahr oder falsch liefert. Wenn er wahr liefert, dann wird die Schleife mindestens noch einmal durchlaufen, ansonsten nicht mehr; dann wird mit der ersten Anweisung nach der Schleife weitergemacht.

Nach jedem Schleifendurchlauf, aber vor der nächsten Prüfung von laufbedingung, wird der Teil reinitialisierung durchgeführt. Dies kann man wie hier zum Erhöhen der Schleifenzählers nutzen. Es können auch mehrere Anweisungen stehen, die an dieser Stelle ausgeführt werden sollen; diese sind dann wieder mit Kommata zu trennen.

Jeder Teil in der for-Schleife kann auch fehlen (außer for() natürlich).

break und continue sind identisch zu verwenden wie in der while-Schleife. Der einzige Unterschied ist der, daß bei der continue-Anweisung zuerst die Reinitialisierung ausgeführt wird.

Beispiel:

int f[10];
int i;
for( i=0; i<10; i++ ) f[i] = 0;
ist identisch mit:
int f[10];
int i;
for( i=0; i<10; ) f[i++] = 0;

Endlosschleifen kann man wahlweise mit while, do ... while oder for erzeugen. Üblich sind die beiden Konstruktionen while( 1 ) ... und for(;;) .... Der Quelltext wird schön lesbar, wenn man einmalig (ggf. in einer Headerdatei) sich eine Endlosschleife definiert:

#define     forever for(;;)
und dann die Endlosschleife mit forever ... schreibt.

AnyWare@Wachtler.de