Zitat von
Hansa:
Ja, so ist das. Der Compiler setzt das Zeichen in seinen
Ascii-Wert (oder sonstwas zurück)
Der Compiler setzt gar nichts zurück. Wenn der Compiler es nicht verhindern würde, dann könntest Du folgendes tun
Delphi-Quellcode:
var
B: Byte;
C: Char;
...
B := 65;
C := 'A';
if B = C then
...
Der Lauf würde True ergeben, nur der Compiler erlaubt den Vergleich nicht!
Delphi-Quellcode:
var
B: Byte;
C: Char;
...
B := 65;
C := '
A';
asm
Mov AL, B
Mov AH, C
CMP AL, AH
JNZ @@OOPS
...
@@OOPS:
Das würde ohne Probleme gehen und True ergeben. Intern sind Byte und Char IDENTISCH.
Zitat von
Hansa:
D.h., da werden die Funktionen ORD, CHR usw. automatisch aufgerufen, um uns die Arbeit zu ersparen.
Schlußfolgerung aus oben. Der Compiler macht GAR NICHTS.
Zitat von
Hansa:
Denn dadurch kommen auch Rundungsdifferenzen etc. zustande.
Byte Ganzzahln wie Byte und Integer dies sind, kommt es nicht zu Rundungsfehlern!
...
...