for

Eine for-Schleife wiederholt die Ausführung eines Codeblocks, solange die Überprüfung einer Bedingung vor Ausführung des Codeblockes true ergibt. Zusätzlich kann eine Initialisierung und eine automatische Statusänderung am Ende der Ausführung des Codeblockes definiert werden. Die Initialisierung, die Bedingung und die Statusänderung stehen stets in dieser Reihenfolge getrennt durch Semikolons ; in runden Klammern () nach dem Keyword for. Danach folgt der Code, der ausgeführt wird, solange die Bedingung true ist.

#include <stdio.h> int main(){ int i; for(i = 0; i < 5; i++){ printf("%d\n", i); } return 0; }

0 1 2 3 4

Siehe auch while, Bedingung, Anweisungsblock

Details

Die for-Schleife ist besonders geeignet, um schrittweise aufzuzählen, weswegen die for-Schleife auch als Zählschleife bezeichnet wird. Dabei ist das oben aufgeführte Beispiel die typische Art, Zählvariablen zu definieren. Die Zählvariable (in diesem Falle i) wird auf den Initialwert gesetzt, es wird definiert, bis zu welchem Wert die Variable laufen soll und es wird die Schrittweite pro Iteration anhand der Statusänderung definiert. Um rückwärts zu zählen wird folgendes Schema angewendet:

for(i = 2; i >= 0 ;i--){ printf("%d\n", i); }

2 1 0

Genauso wie bei Bedingungen sind beliebige Anweisungen für die Initialisierung und Statusänderung möglich. Es können für die beiden Angaben auch mehrere Anweisungen getrennt durch Komma , geschrieben werden. Diese Anweisungsabfolgen folgen denselben Regeln wie eine Bedingungsabfolge.

int i,j; for(i=0, j=0; i<4; i++, j--){ printf("%d, %d\n", i, j); }

0, 0 1, -1 2, -2 3, -3

Bei der for-Schleife dürfen sowohl die Initialisierung, als auch die Bedingung und die Statusänderung jeweils leer sein. Die Semikolons ; müssen jedoch vorhanden sein. Die leere Bedinung wird als true angenommen.

for(;;){ printf("Best for-loop ever!\n"); break; }

Best for-loop ever!

Jede for-Schleife kann grundsätzlich mittels einer while-Schleife nachgebaut werden. Die Initialisierung steht dabei vor der while-Struktur und die Statusänderung am Ende des while-Codeblockes.

#include <stdio.h> int main(){ int i; for(i = 0; i < 3 ;i++){ printf("%d\n", i); } i = 0; while(i < 3){ printf("%d\n", i); i++; } return 0; }

0 1 2 0 1 2

Jedoch bietet die for-Schleife gegenüber der while-Schleife den Vorteil, dass bei einer continue-Anweisung die Statusänderung automatisch ausgeführt wird, was bei der while-Schleife nicht stattfindet. Die break-Anweisung hingegen bricht die for-Schleife per sofort ab, die Statusänderung wird nicht ausgeführt.

Genauso wie bei der while-Schleife wird bei der for-Schleife die Bedingung VOR Ausführung des Codeblocks geprüft. Es ist somit möglich, dass eine solche Schleife nie ausgeführt wird, wenn die Bedingung bereits zu Beginn false ergibt.

for(i=0; i < -1 ;i++){ printf("%d\n", i); }

loop not executed.