
Casten von Float auf Long auch bei Vergleichen?!
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Ist das der Thread mit der nicht endenden For-Schleife? Oder welcher ist es? Habe keinen anderen gefunden der in Frage käme...


ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Codeoptimierung
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.

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. und dann erst weiter gerechnet.
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:
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
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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive