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