RTV forum PL | NewsGroups PL

Właściwe porównywanie liczb int8_t ze znakiem w AvrGCC dziwne zachowanie

porownywanie liczb int8_t o roznych znakach, avrgcc

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Właściwe porównywanie liczb int8_t ze znakiem w AvrGCC dziwne zachowanie

BartekK
Guest

Wed Oct 18, 2006 2:48 am   



moze glupie pytanie, ale chyba cos zle robie albo ten kompilator (z
avrstudio najnowsze, sp4) cos dziwnie interpretuje
powiedzmy ze mam 2 liczby typu int8_t, czyli moga one przyjmowac
wartosci od -128 do +127. Porownuje je ze soba.
I wychodzi mi ze np:
8 (0x08) > 5 (0x05) = prawda, wiadomo- logiczne
-12 (0xF4) > 5 (0x05) = prawda (no bitowo patrzac to tak, ale przeciez
kompilator wie ze to typ ze znakiem!)
Ta sama procedurka skompilowana pod "zwyklym" gcc (i operujace na int)
na x86 dziala prawidlowo, tzn porownujac ujemna do dodatniej - ujemna
jest mniejsza...


--
| Bartlomiej Kuzniewski
| sibi@drut.org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338173

Patryk Sielski
Guest

Wed Oct 18, 2006 5:51 am   



BartekK <sibi@drut.org> pisze:
Quote:
moze glupie pytanie, ale chyba cos zle robie albo ten kompilator (z
avrstudio najnowsze, sp4) cos dziwnie interpretuje
powiedzmy ze mam 2 liczby typu int8_t, czyli moga one przyjmowac
wartosci od -128 do +127. Porownuje je ze soba.
I wychodzi mi ze np:
8 (0x08) > 5 (0x05) = prawda, wiadomo- logiczne
-12 (0xF4) > 5 (0x05) = prawda (no bitowo patrzac to tak, ale przeciez
kompilator wie ze to typ ze znakiem!)
Ta sama procedurka skompilowana pod "zwyklym" gcc (i operujace na int)
na x86 dziala prawidlowo, tzn porownujac ujemna do dodatniej - ujemna
jest mniejsza...

OIDP google: integral promotion

--
Pozdrawiam,
Patryk Sielski
http://usprawnienia.pl

Piotr Gałka
Guest

Wed Oct 18, 2006 8:58 am   



Użytkownik "Patryk Sielski" <psielski-usun@elka-usun.pw.edu.pl> napisał w
wiadomości news:135a1$4535c0c6$57ceab2d$26677@news.chello.pl...
Quote:
powiedzmy ze mam 2 liczby typu int8_t, czyli moga one przyjmowac
wartosci od -128 do +127. Porownuje je ze soba.
I wychodzi mi ze np:
8 (0x08) > 5 (0x05) = prawda, wiadomo- logiczne
-12 (0xF4) > 5 (0x05) = prawda (no bitowo patrzac to tak, ale przeciez
kompilator wie ze to typ ze znakiem!)

OIDP google: integral promotion

Zainteresowało mnie. Popatrzyłem na dwa pierwsze trafienia google.

Tam opisywany jest tylko taki problem, że małe unsigned mogą być promoted na
większe signed lub unsigned.
Ale o problemach aby małe signed jakoś źle działały nie zauważyłem.
P.G.

BartekK
Guest

Wed Oct 18, 2006 10:56 am   



Piotr Gałka napisał(a):
Quote:
wartosci od -128 do +127. Porownuje je ze soba.
I wychodzi mi ze np:
8 (0x08) > 5 (0x05) = prawda, wiadomo- logiczne
-12 (0xF4) > 5 (0x05) = prawda (no bitowo patrzac to tak, ale przeciez
kompilator wie ze to typ ze znakiem!)
OIDP google: integral promotion
Tam opisywany jest tylko taki problem, że małe unsigned mogą być
promoted na większe signed lub unsigned.
Ale o problemach aby małe signed jakoś źle działały nie zauważyłem.
Rebus, zmienilem optymalizacje, przekompilowalem i dziala. Zmienilem

spowrotem - tez dziala...

--
| Bartlomiej Kuzniewski
| sibi@drut.org GG:23319 tel +48 696455098 http://drut.org/
| http://www.allegro.pl/show_user_auctions.php?uid=338173

elektroda NewsGroups Forum Index - Elektronika Polska - Właściwe porównywanie liczb int8_t ze znakiem w AvrGCC dziwne zachowanie

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map