Seite 2 von 2

Verfasst: 14.02.2008 23:22
von hardfalcon
Dann wirds halt gefixt, 4.20 is ja noch in der Beta-Phase... Käfer sind da, um gejagt zu werden... :lol:

Verfasst: 15.02.2008 19:50
von PMV
Na hauptsache jemand sagt es Fred noch bevor die PB4.20 Final ist :wink:
... interessantes verhalten ist es aber schon :shock:

MFG PMV

Verfasst: 15.02.2008 20:20
von Kaeru Gaman
anscheinend wird da ne long als float interpretiert oder umgekehrt....

Verfasst: 15.02.2008 21:48
von #NULL
Na hauptsache jemand sagt es Fred noch bevor die PB4.20 Final ist Wink
im englishen forum ist gerade auch ein thread dazu.
ich denke mal es wird kein 'bug-fix' geben, denn er kann das bestimmt nicht so einfach ändern.

Verfasst: 16.02.2008 00:02
von ZeHa
Ist das der Thread mit der nicht endenden For-Schleife? Oder welcher ist es? Habe keinen anderen gefunden der in Frage käme...

Verfasst: 16.02.2008 00:04
von Kaeru Gaman
ne, der thread mit der nicht endenden for-schleife war das problem,
wenn man was anderes als long für ne for-schleife nimmt...
das hat nix mit nem float-integer-mixup zu tun...

hat er keinen aktuellen thread geschrieben?

Verfasst: 16.02.2008 00:25
von #NULL

Verfasst: 16.02.2008 05:19
von mk-soft
Codeoptimierung

Code: Alles auswählen

; distance.l = 10
  MOV    dword [v_distance],10
; 
; If distance < (64 * 0.5)
  MOV    ebx,dword [v_distance]
  XOR    eax,eax
  CMP    ebx,eax
  JGE   _EndIf2
; Debug "kleiner"
; Else
  JMP   _EndIf1
_EndIf2:
; Debug "groesser"
; EndIf 
_EndIf1:
Sieht aus nach optimierung
1. distance ist Long -> also
2. auch 64 ist Long -> also
3. Mache aus 0.5 ein Long -> Result 0
4. 64 * 0 -> Result 0
5. Vergeiche mit 0

hmm

Ist also eine frage der Interpretierung. Ich Denke ein Bug aber mit Diskusionsbedarf.

Eine Vermischung von Zahlentypen hat schon immer in allen P-Sprachen zu unklarheiten geführt.
Bei "C" sollte damals immer mit Typeangaben bei wechsel gearbeitet werden. Sonst gabs eine Fehlermeldung.

:|

Code: Alles auswählen

distance.l = 10

If distance < Int(64.0 * 0.5)
    Debug "kleiner"
Else
    Debug "groesser"
EndIf 
So ist es eindeutig für den Compiler

Habe schon immer vermieden (auch vor PB) Float und Long zu mischen. Und wenn, dann habe ich eine eindeutige Zuweisung durchgefuhrt.

Code: Alles auswählen

FloatVal.f = LongVal.l
und dann erst weiter gerechnet.