Signed/unsigned v C (was Re: arduino - povikendovy povzdech)

Ladislav Vaiz spam na nagano.cz
Pondělí Březen 23 13:33:30 CET 2015


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.



Další informace o konferenci Hw-list