Signed/unsigned v C (was Re: arduino - povikendovy povzdech)
Zuffa Jan
ZuffaJ na cgc.sk
Pondělí Březen 23 14:37:47 CET 2015
A co takto:
int wirte(char *data, int bytes)
{
data = data+bytes;
for(int I = 0; I < bytes; i++)
{
posli(*(data--));
}
}
:)
j.
-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Petr Weissar
Sent: Monday, March 23, 2015 1:49 PM
To: HW-news
Subject: Re: Signed/unsigned v C (was Re: arduino - povikendovy povzdech)
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#GPtrA
> rray
> ? 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
_______________________________________________
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