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