Gerade bei Einsteigern in Sachen C bzw. C++-Programmierung (und vermutlich gilt das auch für andere Sprachen) wird der Abfrage-Operator == mit dem Zuweisungs-Operator = verwechselt. Sofern man dies in einer if-Abfrage tut, so stellt diese Verwechslung rein syntaktisch keinen Fehler dar. Der Grund ist darin zu sehen, dass mit = zunächst eine Zuweisung erfolgt und dann geprüft wird, ob die Zuweisung erfolgt ist. Und dazu ist das Ergebnis in den allermeisten Fällen wahr (also true). Der Compiler kann zwar per Parameter angewiesen werden, auf solche Fallen zu achten, er wird aber nur eine Warnung ausgeben können und nicht mit einem Fehler abbrechen.
Man kann diesen Anfängerfehler zumindest beim Vergleich mit Konstanten vermeiden, in dem man die sogenannte Joda-Schreibweise anwendet. Dieser Begriff ist von Meister Joda aus der Kino-Serie Star Wars abgeleitet. Meister Joda vertauscht beim Sprechen die Reihenfolge der Wörter. Sein berühmtester Satz war: "Viel zu lernen Du noch hast".
Konkret bedeutet dies, dass man nicht mehr schreibt (so wie es leider in den allermeisten Lehrbüchern zu finden ist):
if (continue_flag == true) { ... }
sondern die Reihenfolge in der runden Klammer tauscht:
if (true == continue_flag) { ... }
Passiert nun der eingangs erwähnte Tippfehler wie folgt:
if (true = continue_flag) { ... }
so wird der Compiler mit einem Fehler abbrechen, da man einer Konstante (in diesem Falle true) keinen Wert zuweisen darf bzw. kann.
Damit kann man sich vom Compiler helfen lassen, Programmierfehler zu vermeiden.
Comments 2