A switch típusú elágaztatás a vezérlést több lehetséges utasítás valamelyikére adja át egy kifejezés értékétõl függõen. Alakja:
switch (kifejezés) blokk
A kifejezés kiértékelésekor a szokásos aritmetikai konverziók megtörténnek, a kapott típusnak int-nek kell lenni. A blokkon belül bármely utasítás rendelkezhet a következõ formátumú címkével (akár többel is):
case állandó_kifejezés:
Az állandó_kifejezés fordítási idõben kiértékelhetõ kifejezést jelent, azaz nem függhet egyetlen változó értékétõl sem. Nem használható két egyforma értékû case címke. A switch utasítás végrehajtása a kifejezés kiértékelésével kezdõdik, majd az így nyert érték összehasonlításra kerül az összes case állandóval. Ha valamelyikkel megegyezik, akkor a vezérlés az adott case címkét követõ utasításra adódik. Ha a kifejezés egyik case konstanssal sem egyezik meg, akkor a vezérlés a default: címkéjû utasításra adódik, ha ilyen létezik; ellenkezõ esetben a blokk egyetlen utasítása sem lesz végrehajtva. A blokk általában nem tartalmaz deklarációs illetve definíciós részt, ha mégis, akkor a definíciókban esetleg szereplõ kezdõértékadások hatástalanok lesznek.
A break; utasítás befejezi az õt körülvevõ legbelsõ while, do, for, vagy switch utasítás végrehajtását, és a vezérlés az így befejezett utasítás mögé kerül. A következõ példa felhasználja a korábban definiált enum nap típusú ma változót:
switch (ma) { case hetfo:amit hétfõ esetén csinálni kell
break; case kedd: case szerda:keddi, vagy szerdai teendõk
break; case szombat:amit szombaton kell tenni
/* nincs break! */ case vasarnap:ami szombati vagy vasárnapi dolog
break; default:amit egyébként csinálni kell
break; } /* endswitch */Figyeljük meg, hogy az egyes esetekhez tartozó utasításokat a következõ case címke önmagában nem zárja le (egy címke a vezérlést nem változtathatja meg, csak célpont lehet egy vezérlésátadásnál), a tényleges lezárást a break; utasítással érhetjük el. Ki is használhatjuk ezt a tulajdonságot, mint a példánkban ezt szombat esetén tettük: a megfelelõ esethez tartozó utasítások végrehajtása után "rácsorogtunk" a következõ esetre. Természetesen az ilyen, nem nyilvánvaló megoldásokat feltûnõen illik jelölni.
A continue; utasítás szolgál arra, hogy egy ciklus törzsének végrehajtását félbeszakítsa, és a vezérlést az adott ciklus fejére adja vissza (ez while-nál és do-nál a feltételvizsgálat, for-nál a léptetés). A goto utasítás a vezérlést a megnevezett címke utáni utasításra adja.
Egy függvény a hívójához a return utasítás segítségével térhet vissza. Az utasításnak kétféle alakja van:
return;
vagy
return kifejezés;
Az elsõ formát a void típusú függvényeknél használjuk; a második forma esetén a függvény visszatérési értékét a kifejezés határozza meg. Szükség esetén az értékadó operátorhoz hasonló módon konvertálódik a kifejezés a függvény visszatérési típusára, de nem lesz int-nél rövidebb egész illetve double-nál rövidebb lebegõpontos típusú (ezért célszerû int-nek deklarálni a függvények visszatérési értékét char vagy short helyett). Megjegyezzük, hogy a függvény törzsét alkotó blokk végét jelzõ }-en való áthaladás egyenértékû a return; utasítás végrehajtásával.