OT Ceckarsky kviz

Pavel Troller patrol@sinus.cz
Čtvrtek Březen 5 13:06:07 CET 2009


Zdravim,
  nu, ja si nejsem zcela jist, zda to tak je zcela dobre :-). Protoze
parser aritmetiky napred vyhodnoti vyraz v zavorce, takze zavola
GetByte(), ktere precte LSB, a dalsi GetByte() se zavola az potom a
to precte MSB. Tim padem budou bajty v cisle prohozeny...
  Pro ucely citelnosti a jistoty provedeni bych radeji volil trosku
komplikovanejsi zapis

  uint8_t lo, hi;
  uint16_t a;
  ...
  lo = GetByte(); hi = GetByte();
  a = hi << 8 | lo;

  S pozdravem Pavel Troller


> Vyraz sa vyhodnocuje zlava, t.j. z tohto pohladu ano. Ja by som pre
> istotu este pouzil zatvorky
> uint16_t a = GetByte() | (GetByte() << 8);
> 
> Zatvorky pouzivam radsej viac, ako menej aj tam, kde to poradie
> vyhodnocovania operatorov nevyzaduje. Profesionalna cest/necest,
> istota je istota a je to aj pre mna prehladnejsie.
> 
> miro
> 
> Dňa 5. marec 2009 12:21, Jan Waclawek <konfera@efton.sk> napísal/a:
> > Mam nejaku funkciu, nazvime ju GetByte(), ktora mi vrati byte (uint8_t), napriklad z nejakej komunikacnej linky, alebo z nejakeho kruhoveho bufferu. Na tej linke alebo v tom bufferi je ulozene 16-bitove cislo, LSB first, a ja ho citam takto:
> >
> > uint16_t a = GetByte() | GetByte() << 8;
> >
> > Je to takto dobre?
> >
> > wek
> >
> >
> > _______________________________________________
> > HW-list mailing list  -  sponsored by www.HW.cz
> > Hw-list@list.hw.cz
> > http://list.hw.cz/mailman/listinfo/hw-list
> >
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list