Einzelnen Beitrag anzeigen

Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.586 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#27

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen

  Alt 11. Okt 2024, 09:09
... 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,
Code:
(Wert1 = Wert2)
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:
Code:
a = b = c = 10;
statt
Code:
a = 10;
b = 10;
c = 10;
Und der Mist zog sich danach durch alle von C abgeleiteten Sprachen. Das führte dann dazu, dass man statt
Code:
  if (a == 5)
immer
Code:
  if (5 == a)
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.
Thomas Mueller

Geändert von dummzeuch (11. Okt 2024 um 09:37 Uhr)
  Mit Zitat antworten Zitat