Betrachten Sie bitte folgenden Quelltext:
1 if (x < 10)
2 if (y < 10)
3 ausgabe("O.K.");
4 else
5 ausgabe("Falsch!");
Was wird hier ausgegeben? Lassen Sie sich nicht von der Stellung des Schlüsselwortes else verwirren! Es wird hier der Eindruck erweckt, dass das else zum if in Zeile 1 gehört. Das ist aber nicht der Fall, ein else gehört immer zum jeweils vorhergehenden if, in unserem Fall also zum if in Zeile 2. Die Meldung "Falsch" wird also ausgegeben, wenn y nicht kleiner als 10 ist.
Dieses hier beschriebene Problem ist als "Dangling-else-Problem" in der Fachliteratur bekannt geworden. Es ist nicht nur von akademischem Interesse, sondern hat auch durchaus praktische Auswirkungen auf die tägliche Programmierarbeit.
Wenn man das Dangling-else-Problem vermeiden will, hilft manchmal der Einsatz von Klammern, selbst wenn sie eigentlich nicht notwendig wären:
1 if (x < 10)
2 {
3 if (y < 10)
4 ausgabe("O.K.");
5 else
6 ausgabe("Falsch!");
7 }
Auch das korrekte Einrücken des Wortes "else" hilft zur Fehlervermeidung. Dieses else bezieht sich auf das "innere" if in Zeile 3. Wollte man eine Alternative, also einen else-Zweig im if in Zeile 1 schreiben, müsste man das so machen:
1 if (x < 10)
2 {
3 if (y < 10)
4 ausgabe("O.K.");
5 }
6 else
7 ausgabe("Falsch!");
8 }
Hier ist der Einsatz der Klammern in Zeile 2 und 5 sogar zwingend, weil sich das else sonst auf das if in Zeile 3 beziehen würde.