for Schleife

Eine for-Schleife wiederholt die Ausführung eines Anweisungsblocks, solange die Überprüfung einer Bedingung true ergibt. Zusätzlich kann eine Startanweisung und eine automatische Statusänderung am Ende der Ausführung des Codeblockes definiert werden. Die Startanweisung, 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.






01234
#include <stdio.h>

int main(){
  int i;
  for(i = 0; i < 5; ++i){
    printf("%d", i);
  }
  return 0;
}

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 verwenden. Die Zählvariable (in diesem Falle i) wird auf den Initialwert gesetzt, es wird festgelegt, bis zu welchem Wert die Variable laufen soll und es wird die Schrittweite pro Iteration mittels der Statusänderung definiert. Um rückwärts zu zählen wird folgendes Schema angewendet:


43210
for(i = 4; i >= 0; --i){
  printf("%d", i);
}

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


Condition is true!
for(;;){
  printf("Condition is true!\n");
  break;
}

Wenn Ausdrücke mittels Kommas , getrennt werden, können mehrere Anweisungen für die Startanweisung und Statusänderung mittels des Sequenz-Operators angegeben werden.



04 13 22 31 40
int i,j;
for(i = 0, j = 4; i < 5; ++i, --j){
  printf("%d%d ", i, j);
}

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






01234




01234
#include <stdio.h>

int main(){
  int i;
  for(i = 0; i < 5 ;++i){
    printf("%d", i);
  }
  
  i = 0;
  while(i < 5){
    printf("%d", i);
    i++;
  }
  return 0;
}

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.


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