
Jetzt denkt dein Programm! if, else und else if sind die Werkzeuge für alle Entscheidungen. Lerne erst die einfache Form, dann baue auf!
if – die einfachste Entscheidung
if (Bedingung) { // wenn wahr }
if (alter >= 18) { printf("Volljährig!\n"); }
if – else
if (Bedingung) { // wenn WAHR } else { // wenn FALSCH }
else if – mehrere Fälle
if (note == 1) printf("Sehr gut!\n"); else if (note == 2) printf("Gut!\n"); else if (note == 3) printf("Befriedigend.\n"); else if (note == 4) printf("Genügend.\n"); else printf("Nicht genügend!\n");
Wichtige Regel
Immer von oben nach unten prüfen – die erste wahre Bedingung wird ausgeführt, der Rest wird übersprungen!
Häufige Fehler
= statt == beim Vergleichen
Falsch – Zuweisung statt Vergleich
if (x = 5) { // weist 5 zu! printf("immer wahr\n"); }
Richtig – Vergleichsoperator ==
if (x == 5) { // vergleicht! printf("nur wenn x==5\n"); }
Semikolon nach der if-Bedingung
Gefährlicher Fehler: if (x > 0); — leerer Rumpf!
Das Semikolon beendet die if-Anweisung sofort. Der Block danach wird immer ausgeführt, egal ob die Bedingung wahr oder falsch ist.
if (x > 0); // ← Semikolon! if endet hier { printf("läuft immer!\n"); // kein if-Rumpf mehr }
Fehlende geschweifte Klammern bei mehreren Anweisungen
Falle: kein Block
if (x > 0) printf("positiv\n"); printf("immer!\n"); // außerhalb!
Richtig: mit Block
if (x > 0) { printf("positiv\n"); printf("auch bedingt!\n"); }
Praktisches Beispiel – Notenvergabe
Eine klassische Anwendung von else if: Punktzahlen in Noten umwandeln. Die Ketten werden von oben nach unten geprüft – die erste passende Bedingung gewinnt.
int punkte = 78; char note; if (punkte >= 90) note = 'A'; // 90–100 else if (punkte >= 80) note = 'B'; // 80–89 else if (punkte >= 70) note = 'C'; // 70–79 ← passt! else if (punkte >= 60) note = 'D'; // 60–69 else note = 'F'; // unter 60 printf("Note: %c\n", note);
Warum funktioniert das so elegant?
Da wir von oben nach unten prüfen und die Bedingungen sich nicht überlappen können, reicht >= ohne obere Grenze. Sobald z. B. punkte >= 70 zutrifft, wurden alle höheren Schwellen bereits verworfen.