OT odcitanie v C

Miroslav Mraz mraz na seznam.cz
Čtvrtek Duben 24 13:06:21 CEST 2014


I když udělám závorky, výsledek 0xE2 je opravdu dost neočekávaný. Řádek
  if ( ((uint16_t)l - h) < 3 ) result |= 2; je asi ten problém. Máte 
nějaké vysvětlení ?

Mrazík


On 04/24/2014 12:25 PM, Jan Waclawek wrote:
> Rozne prekladace sa vsetky musia spravat podla normy, ta pripusta 
> niektore implementacne definovane polozky. Relevantny rozdiel pre 
> tento konkretny priklad je v implementacne definovanej sirke int. 
> Predpokladajme, ze je to 32 bitov. Pred aritmetickymi operaciami 
> (vratane toho porovnania) sa robia "usual conversions", co zhruba 
> znamena, ze ak su operandy "mensie alebo rovne" ako int (int vie 
> reprezentovat vsetky ich hodnoty), tak sa konvertuju na int; ak nie, 
> konvertuju sa na vacsi z tych dvoch operandov. Toto by malo stacit na 
> riesenie ulohy, ale ano, to bolenie hlavy zostava... ;-) wek



Další informace o konferenci Hw-list