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.