| |
|
|
| Imho wird dieser Quelltext:
nicht korrekt abgearbeitet:
Hierbei setze ich x& auf den Wert $FFFFFFFE und frage danach x& ab ob es den selben Wert $FFFFFFFE besitzt. Wird aber "nein" ermittelt.
Oder übersehe ich dabei etwas?
So gehts:
So nicht: und so gehts auch:
|
|
|
| |
|
|
|
RGH | Hallo, hier kommt zum Tragen, dass Hexwerte ($xxxxx) nun auch QuadInt-Länge haben können. Das heißt also, dass $FFFFFFFE für den Wert 4294967294 steht, was sich doch recht deutlich von -2 unterscheidet. ;) Wird aber dieses $FFFFFFFE nun lediglich einem vorzeichenbehafteten LongInt x& zugewiesen, wird die Bytefolge dort natürlich als -2 interpretiert. Aber man kann ja nun QuadInts benutzen:
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 10.02.2011 ▲ |
|
|
|
|
| Hm - dass heißt aber auch das Du eine Long-Variable mit einem Quad-Wert vergleichst - also x& ist Long und $FFFFFFFE dann aber als Quad interpretierst.
Mir ist jetzt nicht 100% klar ob das so "gut und richtig" ist weil nach "long=" doch garkein Quad kommen dürfte. |
|
|
| |
|
|
|
RGH | Wieso sollte das nicht gehen? Solange der Wert des Quad innerhalb des Wertebereiches eines vorzeichenbehafteten Longs ist, kann der Quad problemlos mit dem Long verglichen werden und sogar gleich sein. Ist der Quad aber - wie in unserem Beispiel - außerhalb des Wertebereiches, muss der Vergleich natürlich "falsch" ergeben.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 10.02.2011 ▲ |
|
|
|
|
| Was ich meine ist doch, weshalb eine Long-Variable mit einem Quad-Wert vergleichen statt eine Long-Variable mit einem Long-Wert und eine Quad-Variable mit einem Quad-Wert denn dann würde es ja in jedem Fall richtig funktionieren. |
|
|
| |
|
|
|
Jörg Sellmeyer | Roland hat schon Recht. $FFFFFFFE ist eben nicht -2, sondern die Variable x& ist -2. Wenn Dann müßtest Du zwei Longvariablen vergleichen:
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 10.02.2011 ▲ |
|
|
|
|
| Ich verstehe Dich ja, aber ob das nun richtig ist das "ich" statt "XProfan" zwei Long-Variablen(-Werte) vergleichen sollte wo das Argument doch bereits Long vorgibt... |
|
|
| |
|
|
|
RGH | Naja, wenn Du bewußt eine Longvariable mit einem Literal vergleichst, dass außerhalb der Bereichsgrenzen eines Long liegt, was erwartest Du?
Ok, ich könnte es überprüfen und eine Fehlermeldung erzeugen. Aber hilft das weiter? Und ich könnte bei der Zuweisung auch überprüfen, ob der Wert überhaupt in die Variable reinpasst, aber das habe ich noch nie gemacht. Aber wie man es dreht und wendet: $FFFFFFFE ist nun mal nicht -2!
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 10.02.2011 ▲ |
|
|
|
|
| RGH (10.02.11)
Naja, wenn Du bewußt eine Longvariable mit einem Literal vergleichst, dass außerhalb der Bereichsgrenzen eines Long liegt, was erwartest Du?
Imho liegt $FFFFFFFE doch garnicht ausserhalb der Bereichsgrenze eines 32-Bit Long - darum gehts mir doch. |
|
|
| |
|
|
|
Jörg Sellmeyer | das ist so, als wenn Du den String "Ich bin ein langer Satz, der nicht in eine kurze Variable paßt" an eine Stringvariable mit begrenzter Länge zuweist und Dich dann wunderst, daß die beiden unterschiedlich sind.
x$(23) = "Ich bin ein langer Satz, der nicht in eine kurze Variable paßt" Case x$ <> "Ich bin ein langer Satz, der nicht in eine kurze Variable paßt": wunderwunder
Nachtrag: Jetzt verstehe ich Deine Argumentation nicht mehr.
Hier passiert doch genau das Gleiche. x& = 1.1 wird zu 1. Verglichen mit 1.1 ergibt das einen Fehler.
Beim anderen Beispiel wird x& = $FFFFFFFE zu -2 und das ist nu mal nicht $FFFFFFFE |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 10.02.2011 ▲ |
|
|
|
|
RGH | Zu Long und Quad: Also in meinen Augen liegt 4294967294 ($FFFFFFFE) definitiv außerhalb des vorzeichenbehaftetet Long-Wertebereichs! (In einen Long ohne Vorzeichen würde es reinpassen, aber den kennt XProfan nicht.)
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 10.02.2011 ▲ |
|
|
|
|
| Ich habe ja den Themen-Title "Signed ./. UnSigned -Problem bei Hexkonstanten?" gewählt.
Jörg Sellmeyer (10.02.11)
das ist so, als wenn Du den String "Ich bin ein langer Satz, der nicht in eine kurze Variable paßt" an eine Stringvariable mit begrenzter Länge zuweist und Dich dann wunderst, daß die beiden unterschiedlich sind.
Ich meine das ich das so nicht tun würde, also mich dann wundern.
Es ist imho ja auch nicht so, das hier eine Satzlänge vorliegt, die nicht in den String passt, denn es gibt ja keinen Informationsverlußt bei:
Denn auch ein signedLong besteht aus 4 Byte und nur die werden hier beschrieben. ^^
$FFFFFFFE ist bei einem signedLong -2 und ich grüble halt ob XProfan beim Argument Long=$FFFFFFFE die rechte Seite (da diese in den long reinpasst) korrekt als Quad statt Long interpretiert.
Ich gebe mich aber auch geschlagen wenn ich da einen Gedankenfehler hab. ^^ |
|
|
| |
|
|