Deutsch
Bugs und vermeintliche

XProfan X2

Signed ./. UnSigned -Problem bei Hexkonstanten?

 
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:
cls
print $profVer
var x&=-2
casenot x&=-2 : messageBox "Fehler","",0
waitInput
end

So nicht:
und so gehts auch:

2 kB
Hochgeladen:10.02.2011
Ladeanzahl259
Herunterladen
 
10.02.2011  
 




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.
 
10.02.2011  
 




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.
 
10.02.2011  
 




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:
cls
print $profVer
var x&=$FFFFFFFE
var y& = $FFFFFFFE
casenot x&=y& : messageBox "Fehler","",0
waitInput
end
 
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...
 
10.02.2011  
 




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.
 
10.02.2011  
 




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.
cls
print $profVer
var x&=1.1
casenot x&=1.1 : messageBox "Fehler","",0
waitInput
end

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. ^^
 
10.02.2011  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

25.228 Betrachtungen

Unbenanntvor 0 min.
iF02.01.2016
Georg Teles02.01.2016
E.T.26.12.2015
Jörg Sellmeyer18.11.2015
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie