Signed/unsigned v C (was Re: arduino - povikendovy povzdech)
Petr Weissar
weissar na kae.zcu.cz
Pondělí Březen 23 13:48:31 CET 2015
Napadá mne třeba konstrukce:
int write(char *data, int bytes)
{
int i = bytes;
do
{
i--;
neco(data[i]);
} while (i);
return bytes;
}
Petr
Dne 23. 3. 2015 v 13:33 Ladislav Vaiz napsal(a):
> Jan Waclawek napsal(a):
>> Mimochodom, v
>>
>> write(char* data, int bytes)
>> nevidim dovod pre ten druhy parameter nepouzit typ z <stdint.h>, alebo
>> (ak
>> silou-mocou niekto chce byt pre-C99-kompatibilny) tak minimalne unsigned.
>>
>
> No já na něco podobného ohledně unsigned narazil. Řekněme, že data
> potřebuju někam poslat obráceně. Tak začnu psát:
>
> int write(char *data, int bytes){
> int i;
> for (i = bytes - 1; i >= 0; i--){
> neco(data[i]);
> }
> return bytes;
> }
>
> Když budu mít bytes unsigned, tak bude problém s přiřazením do i. Když
> dám unsigned i, tak bude vždy >= 0 a po přetečení i se asi budu divit.
> Jedině použít hrůzu jako:
>
> unsigned i;
> for (i = bytes; i >0; i--){
> neco(data[i-1]);
> }
>
> Nebo máte někdo lepší tip jak kombinovat signed/unsigned například při
> procházení
> https://developer.gnome.org/glib/stable/glib-Pointer-Arrays.html#GPtrArray
> ? Nejde mi o pole delší než 2^31.
>
> L.
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list