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

Josef Štengl ok1ced na nagano.cz
Pondělí Březen 23 13:55:09 CET 2015


Jan měl asi na mysli to int. Já jsem vždy dost zmaten, když vidím int, tak jestli je 16 nebo 32 bitů (a teoreticky, dříve 
i prakticky, a možná v budoucnu také :-) i jiný počet bitů.

Ono když pak děláte něco pro více architektur a jedna z nich má sizeof(char) == sizeof(short) == sizeof(int), tak začnete 
s vděčností používat i typy int_leastN_t a int_fastN_t, aby jste se v tom vyznal a zbytečně neplýtval. Jak pamětí, tak 
napsaným textem.

ced


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