for
-Schleife ist eine Besonderheit von C. In den auf das
reservierte Wort for
folgenden Klammern steht nicht nur, wie
bei den anderen Schleifen ein Kontrollausdruck, sondern ein
Initialisierungsbefehl, der nur einmal, vor Beginn der eigentlichen
Schleife ausgeführt wird, der schon bekannte Kontrollausdruck, sowie
ein Reinitialisierungsausdruck, der nach jedem Schleifendurchlauf
durchgeführt wird. Diese drei Komponenten werden durch Semikolon
voneinander getrennt und jeder von ihnen kann weggelassen werden. Wird
Initialisierung oder Reinitialisierung weggelassen, so wid halt keine
Initialisierung bzw. Reinitialisierung vorgenommen. Wird der
Kontrollausdruck weggelassen, so gilt er als wahr (ungleich 0).
Bei der Initialisierung bzw. Reinitialisierung können auch mehrere, durch Komma voneinander getrennte Befehle stehen.
Eine Formulierung wie z.B.:
for(i=0;i<10;++i) printf("%d\n",i)
ist also äquivalent zu
i=0; /* Initialisierung */ while(i<10){ printf("%d\n",i); ++i; /* Reinitialisierung */ }
Das folgende vollständige Programmbeispiel berechnet Fibonaccizahlen bis zu einer angegebenen Obergrenze, gibt diese, sowie die vorige und das Verhältnis dieser beiden (goldener Schnitt) aus.
#include <stdio.h> void main(void) { int letzte, vorletzte, aktuelle, obergrenze; do{ printf("Obergrenze (>1)\n"); scanf("%d",&obergrenze); }while(obergrenze <= 1); for(vorletzte = letzte = aktuelle = 1; aktuelle < obergrenze; aktuelle = letzte + vorletzte) { printf("%d/%d = %1.10f\n",aktuelle,letzte,(double)letzte/aktuelle); vorletzte = letzte; letzte = aktuelle; } }