-
-
Erfahrener Benutzer
Roboter Genie
Ersteinmal Danke für Euer Interesse,
sternst schrieb:
"gewinnt" immer der unsigned Typ (der signed Typ wird also in den unsigned Typ gewandelt).
Meine Meinung:
Das finde ich "ABSOLUT FATAL", das muss ja schiefgehen.
weil ich habe Jahrzehntelang Assembler programmiert
und bin unweigerlich irgendwann auf selbiges Problem gestoßen,
einen Signed mit einem Unsigned zu vergleichen.
Habe mich dann dafür entschieden, sobald "ein" Signed im Spiel ist,
beide Operatoren als Signed zu interpretieren. Die Wahrscheinlichkeit
daß meine Werte unglücklicherweise im Bereich des "Vorzeichens" landen,
also bei 16 Bit > 32768 oder bei 32 Bit ..... wahr eher gering.
Wie die C-Compiler das nun auswerten, da habe ich natürlich keinen Einfluß. Ich bin nur wirklich erstaunt, daß es in meinem Beispiel schief läuft und das völlig ohne irgend ein Warning.
Na wa solls, Wichtig ist, ich habe das Problem erkannt und kann entsprechend entgegenwirken.
Was ich aber überhaupt nicht verstehe:
Wie schon erwähnt ist eine Auflösung des Codes:
sizeof(menue) / sizeof(TMenuStruct)
eine Konstante, hier wird ja keine "Funktion" aufgerufen
und es ist absolut sichergestllet, daß ein positiver Wert rauskommt.
Und genau diesen Wert soll er ja einsetzten.
Ob signed oder unsigned ist hier völlig unerheblich.
Es ist lediglich eine "Konstante". Wie kommt er dazu meinen als
signed definierten "index" als unsigned zu interpretieren ?
Okay, jetzt bin ich wieder beim Text vom "sternst"
"gewinnt" immer der unsigned Typ (der signed Typ wird also in den unsigned Typ gewandelt).
Im nächsten Leben schreibe ich meine Compiler selber.
Spass muss sein.
Siro
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen