<div dir="ltr"><div><div>Nahodou jsem zrovna shanel nejaky pidi C prekladac pro PC a stahl DecC++ tj. prekladac <br>TDM-GCC 4.8.1 64-bit<br></div>no a ten v prvnim pripade vrati -1 a v druhem 0<br></div>pricemz druha moznost vygeneruje<br><div>[Warning] right shift count >= width of type [enabled by default]<br><br>:-)<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">Dne 31. prosince 2014 17:45 Pavel Hudeček <span dir="ltr"><<a href="mailto:edizon@seznam.cz" target="_blank">edizon@seznam.cz</a>></span> napsal(a):<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">To je nějaký divný. Zadání je jasné:<br>
<br>
Vzít 32b int plný jedniček a 32x posunout, přičemž se doplňuje nulami.<br>
<br>
- Proč by se to mělo přeložit jinak, než pro posun o 1, 2, 17, nebo třeba 35 bitů?<br>
- Proč by mělo (není-li chyba v překladači) vycházet něco jiného než 0?<br>
<br>
PH<br>
<br>
Od: Jan Waclawek<br>
<span class="im HOEnZb">To zavisi od velkosti int. Ak je viac ako 32 bitov, oba pripady su ekvivalentne, ak menej alebo rovne, obidva su nedefinovane, takze prekladac ma plne pravo vygenerovat lubovolny kod, ktory moze trebars aj spadnut. Rad by som, ale nemam teraz moznost citovat z normy.<br>
<br>
Akurat ze gcc sa bude v prvom pripade snazit vygenerovat nejaky kod, co moze dopadnut vselijako v zavoslosti od konkretneho procesora; v druhom tam asi da v ramci jednoduchosti asi 0xFFFFFFFF, t.j. akoby shift ani nenastal; ale moze to byt lubovolne inak.<br>
<br>
>>><br>
</span><div class="HOEnZb"><div class="h5">Na C alebo skor gcc mam tazke srdce koli inym "vlastnostiam"<br>
Len tak schvalne aky vysledok bude podla vas v tychto prikladoch:<br>
<br>
uint32_t addr_rem, mask;<br>
addr_rem = 32;<br>
mask = 0xFFFFFFFF >> addr_rem;<br>
<br>
A aky v pripade:<br>
<br>
mask = 0xFFFFFFFF >> 32;<br>
_______________________________________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</div></div></blockquote></div><br></div>