For tsükkel

Tsükleid while ja do...while kasutati ennekõike tingimuste puhul, kus korduste arv ei olnud teada. Seepärast tuli kas enne või peale lausete täitmist tingimuse väärtust kontrollida. Tsüklit for võib samuti kasutada tundmatu arvu kordustega tsükli täitmiseks, kuid tavaliselt kasutatakse teda tuntud arvuga korduste puhul. Tsükli for kuju on järgmine:

for(<valem1> ; <valem2>; <valem3>)
  <lause või lausete blokk>

Enne lause või lausete bloki täitmist täidetakse valem1. Seejärel täidetakse lauset või lausete bloki niikaua, kuni valem2 väärtus on nullist erinev. Iga kord peale lause või lausete bloki täitmist arvutatakse valem3 väärtus. Viimane peaks muutma valem2 väärtust nii, et tsükkel omaks lõpliku arvu kordusi. Tavaliselt omistatakse valemis1 mingile muutujale algväärtus, mille väärtust valemis2 kontrollitakse ja valemis3 suurendatakse. Näiteks:

int	i;
...
for(i = 0; i < 5; i++)
  printf("Hello World!\n");

Toodud näide trükib ekraanile viis korda teksti "Hello World!". Muutuja i esimene väärtus on 0 ja viimane 4. Iga kord peale väljatrükki suurendatakse i väärtust. Seega täidetakse tsüklit viis korda. Kindla arvu kordustega tsükleid täidab programm natuke kiiremini.

Tsükli for osad valem1, valem2 ja valem3 sisaldavad tavaliselt vaid ühe valemi, kuid nad võivad ka koosneda mitmest valemist, mis sel juhul eraldatakse komadega. Nimetatud osad võivad ka täiesti puududa. Ning lõpuks on for tsüklit võimalik kasutada ka määramata arvu korduste puhul. Näiteks:

for( ; ; )	/* lõputu tsükkel */
 printf("Mind ei saa katkestada!\n");

char Buf[10], *pTmp1, *pTmp2;
char	name[] = "Toomas";
...
for(pTmp1 = name, pTmp2 = Buf; *pTmp1 ; *pTmp2++ = *pTmp1++);

Toodud näide kopeerib sümbolite jada name puhvrisse Buf. Selleks omistatakse valemis1 kahele viidale algväärtused. Valemis2 kontrollitakse esimese viida sisu. Niipea, kui see on null (C - keeles on null sümbolite jada lõpumärgiks), lõpetatakse tsükli täitmine. Valemis3 kopeeritakse esimese viida poolt näidatud sümbol teise viida poolt määrtud kohta ja seejärel nihutatakse mõlemat viita ühe sammu võrra edasi. Siinkohal tuleks meenutada, et kui operaator ++ asus peale muutujat, siis sooritatakse tema tehe alles peale teisi tehteid. Seega täidetakse valemis3 kõigepealt omistamine ja alles seejärel nihutatakse viitasid edasi. Kuna viidaoperaator * omas kõrgemat prioriteeti kui omistamine, siis omistatakse viitade poolt näidatud sümbolid, mitte viitade sisud (aadressid). Selles for tsüklis täidab valem3 kõik vajaliku ja seega pole mingeid lauseid vaja. Kuna midagi peab sisestama, siis sisestame siia lihtsalt ühe semikooloni - tühja lause. See näide demonstreerib ka for tsükli kasutamist määramata arvu korduste puhul. Sümbolite jada "Toomas" sisaldab küll 6 sümbolit, kuid seda ju programm ei tea.