porownywanie liczb int8_t o roznych znakach, avrgcc

Oct 18, 2006 3 Replies

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...



BartekK snipped-for-privacy@drut.org pisze:

OIDP google: integral promotion

U¿ytkownik "Patryk Sielski" snipped-for-privacy@elka-usun.pw.edu.pl> napisa³ w wiadomo¶ci news:135a1$4535c0c6$57ceab2d$ snipped-for-privacy@news.chello.pl...

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.

Piotr Gałka napisał(a):

Rebus, zmienilem optymalizacje, przekompilowalem i dziala. Zmienilem spowrotem - tez dziala...

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required