[elektro] Munka (C kérdés)
potyo
potyo.ada at gmail.com
Sat Sep 17 22:04:06 CEST 2011
Az & nem ugyanazt adná. Én inkább count^0xFFFF-t írnék, vagy egyszerűen
count!=0xFFFF-t.
2011/9/17 Acs Gabor <agabor at electrodesign.hu>
> És vajon melyik a leggyorsabb?
> Lehet hogy az &&0xffff ? Bár mostmár nem vagyok benne biztos, hogy ebben
> az esetben működik.
>
>
> Gábor
>
> 2011.09.17. 17:55 keltezéssel, hg12345 írta:
> > Köszönöm,
> > pont ezt kerestem, hogy miért igy csinálja.
> >
> > Amúgy sokkal egyszerűbb<0xFFFF feltétellel vizsgálni...
> >
> > Üdv
> >
> >
> > Andrei Purdea<purdea.andrei at gmail.com> írta:
> >>> Ez miért nem müködik?>
> >>>
> >> uint16_t count;>
> >> if (~count)>
> >> count++;>
> >>
> > http://std.dkuug.dk/jtc1/sc22/open/n2794/n2794.pdf>
> > nézd a 70-es oldalon (82-es pdf oldal) a 4-es bejegyzést>
> > A C99 standard szerint, negálás előtt a count változó promoválva van>
> > egy 32bites tipusra.>
> > Mivel unsigned (uint16_t), ezért ez azt jelenti hogy balról meg van>
> > tűzdelve egy rakás zéróval, ami mindig zéró marad. A ~count ezért>
> > mindig non-zéró marad, tehát igaz.>
> > Az újracastolás helyett egy másik megoldás: Ha a változód tipusa>
> > int16_t (signed), akkor a promóció alkalmával sign-extended lesz,>
> > mármint>
> > a sign bit-el van megtűzdelve balról. így amikor count=0xffff, akkor>
> > promoted formában 0xffffffff. És a count nincs növelve amikor eléri a>
> > 0xffff-t (vagyis a -1-et)>
> > ----------------------------------------->
> > elektro[-flame|-etc]>
> >
> >
> > -----------------------------------------
> > elektro[-flame|-etc]
> >
> > _____________ NOD32 6433 (20110903) Információ _____________
> >
> > Az üzenetet a NOD32 antivirus system megvizsgálta.
> > http://www.nod32.hu
> >
> >
> >
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list