[elektro] cé típus

hg12345 hg12345 at freemail.hu
Fri May 16 08:53:50 CEST 2014


Hi
valószínűleg a C fordító nem áll a helyzet magaslatán, (mint használsz)
Az automatikus cast-nak helyesen kéne működnie.
Ez a jelenség optimazálás elött vagy után történik?

egy utolsó próbát azért megér :

h1_prop_err = huzo_1_cel - ((long) huzo_1_pos);
elvileg a fentiek hatására az első változót is auto cast-olni kéne,
de a biztonság kedvéért:
h1_prop_err = ((long)huzo_1_cel) -  ((long) huzo_1_pos);

Amúgy próbáld már ki a legegyszerűbb ellenőrzést, optimalizáció nélkül, mert úgy csak egy konstans helyettesítés lesz

huzo_1_cel=100;
h1_prop_err = huzo_1_cel;

ekkor is csinálja, akkor menthetetlen.... :-(

esetleg még ennél is célra törő megoldás:
h1_prop_err = (int) 100;

Érdemes megnézni az mire fordított, és nincs valami nagyon elvetemült fordítási opció beállítva.


Skandar Graun <sgraun at gmail.com> írta:
>Sziasztok!
>
>PIC C18
>
>int     h1_prop_err;
>int     huzo_1_cel;
>int      huzo_1_pos;
>
>huzo_1_pos = 100;
>huzo_1_cel = 400;
>
>h1_prop_err = huzo_1_cel - huzo_1_pos;
>
>így jó.
>
>De ha:
>
>long     h1_prop_err;
>int     huzo_1_cel;
>int      huzo_1_pos;
>
>h1_prop_err = huzo_1_cel - huzo_1_pos;
>
>akkor nem jó, a long változó második byte-jába bejön egy 0x5f érték
>
>ha:
>
>long     h1_prop_err;
>int     huzo_1_cel;
>int      huzo_1_pos;
>
>h1_prop_err = (long)(huzo_1_cel - huzo_1_pos);
>
>akkor is.
>
>ha:
>
>long     h1_prop_err;
>int     huzo_1_cel;
>int      huzo_1_pos;
>
>h1_prop_err = ((long)huzo_1_cel - (long)huzo_1_pos);
>
>akkor is.
>
>Ha kimaszkolom &0x0ffff-el, akkor eltűnik, de akkor nem tudom kezelni a
>negatív számokat.
>
>Mi nem jó?
>-----------------------------------------
>          elektro[-flame|-etc]



More information about the Elektro mailing list