Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#10

AW: Konstante in Konstante

  Alt 25. Nov 2022, 10:19
Zu unerwarteten Fehlern beim CASE würde es nur führen, wenn man doppelte Werte durch die Änderungen bekommt UND der Compiler die Reihenfolge der Auswertung geändert (optimiert) hat.

Normal macht Case intern kein
Delphi-Quellcode:
if i = 0 then ...
else if i = 1 then ...
else if i = 3 then ...
else if i = 4 then ...
else if i = -5 then ...
else ...
sondern eher sowas
Delphi-Quellcode:
//Inc(i, 132) or Dec(i, 123) wenn erster Wert keine 0 ist
if i = 0 then ... // am Ende jeweils ein "goto CaseEnd;"
Dec(i);
if i = 0 then ...
Dec(i, 2);
if i = 0 then ...
Dec(i);
if i = 0 then ...
Inc(i, 9);
if i = 0 then ...
{else} ...
CaseEnd:
Ja, und sowas klappt nur, wenn die Konstanten "unveränderbar" sind, damit der Compiler quasi mit ihnen "rechnen" kann.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (25. Nov 2022 um 10:33 Uhr)
  Mit Zitat antworten Zitat