
Manchmal hängt eine Entscheidung von einer anderen ab. Dann brauchen wir Verschachtelung. Aber wie eine Zwiebel: zu viele Schichten machen den Code unleserlich!
Verschachtelung – if im if
if (alter >= 18) { // äußere Bedingung if (fuehrerschein == 1) { // innere Bedingung printf("Darf fahren!\n"); } else { printf("Kein Führerschein.\n"); } } else { printf("Zu jung!\n"); }
Wann vereinfachen?
❌ Pyramid of Doom
if (a) {
if (b) {
if (c) { ... }
}
}✅ Mit && vereinfachen
if (a && b && c) {
...
}Faustregel
Mehr als 2–3 Verschachtelungsebenen sind ein Zeichen, dass der Code refaktoriert werden sollte. Verwende && und || statt Verschachtelung – wann immer möglich.
Verschachtelung vs. logische Operatoren
Oft lässt sich ein verschachteltes if durch einen einzigen &&-Ausdruck ersetzen. Die folgende Tabelle zeigt den direkten Vergleich:
| Situation | Verschachteltes if | Mit && |
|---|---|---|
| Beide Bedingungen müssen erfüllt sein | if(a){ if(b){...} } | if(a && b){...} |
| Reihenfolge der Prüfung | Äußere Bedingung zuerst | Links nach rechts (Kurzschluss) |
| Lesbarkeit | Unübersichtlich bei 3+ Ebenen | Klar und kompakt |
| Eigener else-Zweig je Ebene möglich? | Ja, für jede Ebene separat | Nur ein gemeinsamer else-Zweig |
Wann Verschachtelung trotzdem nötig ist
Wenn die innere Bedingung nur bei positivem äußerem Ergebnis überhaupt Sinn ergibt – und jede Ebene einen eigenen else-Zweig benötigt – bleibt die Verschachtelung die klarere Wahl.
Praktisches Beispiel – Kreditwürdigkeit
Ein mehrstufiges Prüfschema: Der Antragsteller muss volljährig sein, ein ausreichendes Einkommen haben, und schuldenfrei sein. Jede Stufe liefert eine eigene Fehlermeldung.
int alter = 25; int einkommen = 2500; int keine_schulden = 1; if (alter >= 18) { if (einkommen >= 2000) { if (keine_schulden == 1) { printf("Kredit genehmigt!\n"); } else { printf("Abgelehnt: offene Schulden.\n"); } } else { printf("Abgelehnt: Einkommen zu gering.\n"); } } else { printf("Abgelehnt: minderjährig.\n"); }
Gleiche Logik mit && – weniger Fehlermeldungen
if (alter>=18 && einkommen>=2000 && keine_schulden==1) { printf("Genehmigt!\n"); } else { printf("Abgelehnt.\n"); // kein Detail }
Verschachtelung erlaubt detaillierte Fehler
Wenn jede Prüfebene eine eigene Fehlermeldung braucht, ist die Verschachtelung klarer. Die kompakte &&-Variante kennt nur ein einziges "Abgelehnt".
⚡ Code-Simulator
Schreibe C-Code links und führe ihn aus – der Simulator zeigt printf-Ausgaben sofort:

Ändere die Werte und schau wie sich die Ausgabe verändert. Das beste Lernen ist Ausprobieren!
🎯 Wissens-Quiz
if(a){if(b){printf("X");}} bei a=1, b=0 aus?📋 Spickzettel
✅ Checkliste Unit 9
- Ich kann verschachtelte if-Anweisungen schreiben und lesen
- Ich weiß wann Verschachtelung durch && besser ersetzt wird
- Ich kenne die 2-3-Ebenen-Faustregel