C Kontrollstrukturen Cheatsheet

6 Kernkonzepte
Die wichtigsten Kontrollstrukturen in C: if / else · switch · for · while · do-while · break / continue / goto Kontrollstrukturen steuern den Programmablauf in C – sie entscheiden, welche Codeblöcke unter welchen Bedingungen ausgeführt werden und wie oft Schleifen durchlaufen werden.

if / else – Bedingungen prüfen

if (bedingung) { ... } else { ... }
if (x > 0) { printf("Positiv"); } else if (x == 0) { printf("Null"); } else { printf("Negativ"); }

if prüft eine Bedingung und führt den entsprechenden Block aus. else if und else erweitern die Fallunterscheidung. In C wird jede Bedingung in runde Klammern gesetzt.

Vergleichsoperatoren in C

Operator Bedeutung
== Gleich
!= Ungleich
> Größer als
< Kleiner als
>= Größer oder gleich
<= Kleiner oder gleich
&& Logisches UND
|| Logisches ODER
! Logisches NICHT
Beispiele
int age = 18;
if (age < 18) {
printf("Minderjährig\n");
}
else if (age == 18) {
printf("Genau 18\n");
}
else {
printf("Volljährig\n");
}
// Verschachtelte Bedingung
if (x > 0 && x < 10) {
printf("Zwischen 0 und 10\n");
}
Tipp: In C wird jeder Wert ungleich 0 als true interpretiert. if (x) ist äquivalent zu if (x != 0).

switch – Fallunterscheidung

switch (ausdruck) { case wert: ... break; default: ... }
switch (code) { case 200: printf("OK"); break; case 404: printf("Nicht gefunden"); break; default: printf("Unbekannt"); }

switch ermöglicht eine mehrfache Fallunterscheidung basierend auf einem ganzzahligen Ausdruck. Jeder case wird mit einem break beendet, sonst "fällt" die Ausführung durch.

Beispiele
char note = 'A';
switch (note) {
case 'A':
printf("Sehr gut\n");
break;
case 'B':
printf("Gut\n");
break;
case 'C':
printf("Befriedigend\n");
break;
default:
printf("Unbekannte Note\n");
}
// Mehrere cases ohne break (Durchfall)
switch (c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("Vokal\n");
break;
default:
printf("Konsonant\n");
}
Tipp: Vergessen Sie nicht das break am Ende jedes case-Blocks! Ohne break wird die Ausführung im nächsten case fortgesetzt (sog. "Durchfall").

for – Zählergesteuerte Schleife

for (init; bedingung; inkrement) { ... }
for (int i = 0; i < 5; i++) { printf("%d ", i); }

for ist die zählergesteuerte Schleife in C. Sie besteht aus Initialisierung, Bedingung und Inkrement – perfekt für Iterationen mit bekanntem Zähler.

Beispiele
// Zahlen 0 bis 4 ausgeben
for (int i = 0; i < 5; i++) {
printf("%d ", i);
}
// Rückwärts zählen
for (int i = 10; i > 0; i--) {
printf("%d ", i);
}
// Schrittweite 2
for (int i = 0; i < 10; i += 2) {
printf("%d ", i); // 0 2 4 6 8
}
// Array durchlaufen
int arr[] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
// Variablen außerhalb deklarieren (C89)
int i;
for (i = 0; i < 5; i++) { ... }
Tipp: In C99 und neuer können Sie die Schleifenvariable direkt in der for-Schleife deklarieren: for (int i = 0; ...). In C89 muss sie vorher deklariert werden.

while – Bedingungsgesteuerte Schleife

while (bedingung) { ... }
int i = 0; while (i < 5) { printf("%d ", i); i++; }

while führt den Codeblock aus, solange die Bedingung true ist. Die Bedingung wird vor jedem Durchlauf geprüft – bei false wird die Schleife übersprungen.

Beispiele
// Zähler-Schleife
int count = 0;
while (count < 3) {
printf("%d ", count);
count++;
}
// Benutzereingabe validieren
int zahl;
printf("Gib eine positive Zahl ein: ");
scanf("%d", &zahl);
while (zahl <= 0) {
printf("Ungültig! Gib nochmal ein: ");
scanf("%d", &zahl);
}
// Endlosschleife mit break
while (1) {
char c = getchar();
if (c == 'q') break;
putchar(c);
}
⚠️ Achtung: Vergessen Sie nicht, die Bedingung in der Schleife zu verändern – sonst entsteht eine Endlosschleife! Mit Ctrl+C können Sie diese abbrechen.

do-while – Mindestens einmal ausführen

do { ... } while (bedingung);
do { printf("Mindestens einmal"); } while (bedingung);

do-while führt den Codeblock mindestens einmal aus, bevor die Bedingung geprüft wird. Ideal für Menüs oder Eingabevalidierungen.

Beispiele
// Menü (mindestens einmal anzeigen)
char auswahl;
do {
printf("1 - Option A\n");
printf("2 - Option B\n");
printf("0 - Beenden\n");
printf("Ihre Wahl: ");
scanf(" %c", &auswahl);
switch (auswahl) { ... }
} while (auswahl != '0');
// Mindestens eine Eingabe erzwingen
int zahl;
do {
printf("Gib eine positive Zahl ein: ");
scanf("%d", &zahl);
} while (zahl <= 0);
Tipp: Die do-while-Schleife wird oft für Menüs oder Eingabevalidierungen verwendet, bei denen der Benutzer mindestens eine Eingabe tätigen soll.

break / continue / goto – Schleifensteuerung

break · continue · goto label
break; // Beendet die Schleife / den switch continue; // Überspringt den Rest des Durchlaufs goto label; // Springt zu einem Label (selten verwenden)

break beendet die aktuelle Schleife oder den switch-Block. continue springt zum nächsten Schleifendurchlauf. goto springt zu einem Label – in C möglich, aber selten verwendet.

Beispiele
// break: Suche abbrechen
int arr[] = {1, 3, 5, 7, 9};
for (int i = 0; i < 5; i++) {
if (arr[i] == 5) {
break;
}
printf("%d ", arr[i]); // 1 3
}
// continue: gerade Zahlen überspringen
for (int i = 0; i < 5; i++) {
if (i % 2 == 0) {
continue;
}
printf("%d ", i); // 1 3
}
// goto: Fehlerbehandlung (selten)
if (fehler) {
goto error;
}
// ... normaler Code ...
error:
printf("Ein Fehler ist aufgetreten!\n");
⚠️ Achtung: goto wird in C oft als schlechter Stil angesehen und sollte nur in Ausnahmefällen (z.B. für Fehlerbehandlung) verwendet werden. Verwenden Sie stattdessen strukturierte Kontrollstrukturen.

C Kontrollstrukturen im Überblick

if Bedingte Ausführung
if, else if, else
switch Mehrfache Fallunterscheidung
case, break, default
for Zählergesteuerte Schleife
init; bedingung; inkrement
while Kopfgesteuerte Schleife
Bedingung vor dem Block
do-while Fußgesteuerte Schleife
Mindestens einmal ausführen
break Schleife / switch beenden
continue, goto

Quick Summary

if
Bedingung prüfen
switch
Fallunterscheidung
for
Zählerschleife
while
Kopfgesteuert
do-while
Fußgesteuert
break
Schleife beenden
if (x > 0) { printf("Positiv"); } · for (int i = 0; i < 5; i++) { ... } · while (x < 10) { x++; }