[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