... und dann ist da noch die C-Syntax:
Code:
a = 5;
if (a=6) {
AIst6(); // wird aufgerufen
} else {
AIstNicht6();
}
Es wird AIst6 aufgerufen, weil das Gleichheitszeichen in der If-Abfrage als Zuweisung interpretiert wird und eine Zuweisung auch noch den zugewiesenen Wert zurückliefert. Der ist in diesem Fall <> 0 also True.
In Delphi entspräche das
Delphi-Quellcode:
a := 5;
a := 6; // in C findet dies in der If-Abfrage statt
if a = 6 then
AIst6()
else
AIstNicht6();
Wenn also die ersten C Compiler nicht versucht hätten, Tipparbeit zu sparen, sprich,
immer einen Boolschen Wert liefern würde statt Wert1 auf Wert2 zu setzen, brauchte man den ganzen Kladderadatsch nicht.
Aber es war halt wichtiger (oder cooler?), schreiben zu können:
statt
Und der Mist zog sich danach durch alle von C abgeleiteten Sprachen. Das führte dann dazu, dass man statt
immer
schreiben sollte. Was das Problem etwas entschärfte, denn falls man ein '=' vergisst, schlägt die Zuweisung auf die Konstante fehl.
Inzwischen warnen die Compiler vermutlich, wenn sie in If-Abfragen etc. (x=y) finden, aber da bin ich nicht mehr auf dem Laufenden. Ich bin vor mehr als 20 Jahren aus den C-ähnlichen Sprachen ausgestiegen.