avr-gcc unsigned char
Masz problem? Zapytaj na forum elektroda.pl
From: "Paweł" <paw1976_at_nospam_poczta.onet.pl>
Subject: avr-gcc unsigned char
Date: Thu, 25 May 2006 10:51:27 +0200
Witam.
Dlaczego jak zdefiniuję zmienną typu
unsigned char zm = 128;
to w programie wynosi ona 0?
A jak wpiszę 129 to ma 1.
Tak jakby największa jej wartość to 127.
Czy to jakiś nowy standard?
Jakiego typu użyć żeby mieć osiem bitów bez znaku?
Dzięki za pomoc
Paweł
From: =?ISO-8859-2?Q?G=F3rski_Adam?=
Subject: Re: avr-gcc unsigned char
Date: Thu, 25 May 2006 13:01:14 +0200
Użytkownik Paweł napisał:
Witam.
Dlaczego jak zdefiniuję zmienną typu
unsigned char zm = 128;
to w programie wynosi ona 0?
A jak wpiszę 129 to ma 1.
Tak jakby największa jej wartość to 127.
Czy to jakiś nowy standard?
Coś kolega opuścił.
Skąd wiadomo że jest równe 0 lub 1 ? Z printfa ?
Z debugera ?
Jakiego typu użyć żeby mieć osiem bitów bez znaku?
unsigned char
Dzięki za pomoc
Paweł
Ależ proszę.
Adam
From: "Paweł" <paw1976_at_nospam_poczta.onet.pl>
Subject: Re: avr-gcc unsigned char
Date: Thu, 25 May 2006 11:28:56 +0200
Coś kolega opuścił.
Skąd wiadomo że jest równe 0 lub 1 ? Z printfa ?
Z debugera ?
W pętli for mrygam lampką tyle razy jaka jest liczba.
unsigned char zm, i;
zm = 130;
for(int i = 0; i < zm; i++)
mrygaj;
Dla zmiennych poniżej 128 działa dobrze.
Paweł
From: "Paweł" <paw1976_at_nospam_poczta.onet.pl>
Subject: Re: avr-gcc unsigned char
Date: Thu, 25 May 2006 11:32:04 +0200
Sorry oczywiście w programie jest bez int i tylko samo i.
for(i = 0; i < zm; i++)
Paweł
From: Marcin Stanisz <mstanisz_at_nospam_poczta.bzdury.onet.pl>
Subject: Re: avr-gcc unsigned char
Date: Mon, 29 May 2006 10:02:12 +0200
Dnia Thu, 25 May 2006 11:32:04 +0200, Paweł napisał(a):
Sorry oczywiście w programie jest bez int i tylko samo i.
for(i = 0; i < zm; i++)
Gdyby było z int stawiałbym na opcję -mint8 przy kompilacji :)
Pozdrawiam
Marcin Stanisz
--
"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"
Date: Thu, 25 May 2006 13:58:30 +0200
From: RoMan Mandziejewicz <roman_at_nospam_pik-net.pl>
Subject: Re: avr-gcc unsigned char
Hello Paweł,
Thursday, May 25, 2006, 11:28:56 AM, you wrote:
Coś kolega opuścił.
Skąd wiadomo że jest równe 0 lub 1 ? Z printfa ?
Z debugera ?
W pętli for mrygam lampką tyle razy jaka jest liczba.
unsigned char zm, i;
zm = 130;
for(int i = 0; i < zm; i++)
^^^ a to co?
mrygaj;
Dla zmiennych poniżej 128 działa dobrze.
Ja się nie znam ale chyba typ zmiennej sterującej w pętli też jest
ważny...
--
Best regards,
RoMan mailto:roman_at_nospam_pik-net.pl
From: "Andy" <anokWYTNIJ_at_nospam_ceti.pl>
Subject: Re: avr-gcc unsigned char
Date: Thu, 25 May 2006 14:16:45 +0200
Użytkownik "Paweł" <paw1976_at_nospam_poczta.onet.pl> napisał w wiadomości
news:e5446u$nra$1_at_nospam_news.onet.pl...
Coś kolega opuścił.
Skąd wiadomo że jest równe 0 lub 1 ? Z printfa ?
Z debugera ?
W pętli for mrygam lampką tyle razy jaka jest liczba.
unsigned char zm, i;
zm = 130;
for(int i = 0; i < zm; i++)
mrygaj;
Problem jest chyba w porownaniu i< zm.
Poniewaz "i" jest typu int a "zm" typu unsigned char
to byc moze domyslnie obie sa kastowane na typ int.
Jednak to chyba nie wyjasnia dlaczego gdy zm=128 to miga 1 raz
bo 128 to jest -128 jeesli interpretowac ze znakiem.
--
Andrzej
From: =?ISO-8859-2?Q?G=F3rski_Adam?=
Subject: Re: avr-gcc unsigned char
Date: Thu, 25 May 2006 15:14:37 +0200
Użytkownik Paweł napisał:
Coś kolega opuścił.
Skąd wiadomo że jest równe 0 lub 1 ? Z printfa ?
Z debugera ?
W pętli for mrygam lampką tyle razy jaka jest liczba.
unsigned char zm, i;
zm = 130;
for(int i = 0; i < zm; i++)
mrygaj;
Dla zmiennych poniżej 128 działa dobrze.
Paweł
Powinno działać ,ale może kompilator jakieś promocje robi samoistnie, bo
to chyba raczej nie na pecka.
Możesz spróbować : zm = (unsigned char ) 130;
Daj znać.
Adam
From: =?ISO-8859-2?Q?Pawe=B3_Wi=EAcek?= <coven_at_nospam_vmh.net>
Subject: Re: avr-gcc unsigned char
Date: Thu, 25 May 2006 21:47:49 +0200
Thus wrote Górski Adam <gorskia_at_nospam_.................wp....................pl..................>:
Powinno działać ,ale może kompilator jakieś promocje robi samoistnie, bo
Zgodnie z odwieczną specyfikacją języka ma obowiązek promować char na int.
Paweł
--
(___) | Pawel Wiecek ----------------- Coven / Svart --------------------- |
< o o > | http://www.coven.vmh.net/ <coven_at_nospam_vmh.net> GSM: +48603240006 |
\ ^ / | GPG/PGP info in message headers * [ Debian GNU/Linux developer ] |
(") | * * * Fashion is destruction. -- Brats |
From: "Piotr [PKi]" <pki.nospam_at_nospam_wp.pl>
Subject: Re: avr-gcc unsigned char
Date: Sun, 28 May 2006 19:13:22 +0200
Paweł napisał(a):
Coś kolega opuścił.
Skąd wiadomo że jest równe 0 lub 1 ? Z printfa ?
Z debugera ?
W pętli for mrygam lampką tyle razy jaka jest liczba.
unsigned char zm, i;
zm = 130;
for(int i = 0; i < zm; i++)
mrygaj;
Dla zmiennych poniżej 128 działa dobrze.
Paweł
A czasem kod mrygania nie jest skopany? Nie podałeś go.
Moze mrygaj to zmiana stanu lampki i bedzie taki efekt właśnie?!
From: "Deaco" <dnkontakt_at_nospam_gmail.com>
Subject: Re: avr-gcc unsigned char
Date: 28 May 2006 18:43:33 -0700
Pawe=B3 napisa=B3(a):
Co=B6 kolega opu=B6ci=B3.
Sk=B1d wiadomo =BFe jest r=F3wne 0 lub 1 ? Z printfa ?
Z debugera ?
W p=EAtli for mrygam lampk=B1 tyle razy jaka jest liczba.
unsigned char zm, i;
zm =3D 130;
for(int i =3D 0; i < zm; i++)
mrygaj;
Dla zmiennych poni=BFej 128 dzia=B3a dobrze.
Pawe=B3
mysle ze chyba to to:
jedyny blad jaki zrobiles to "int" po for. na poczatku programu
deklarujesz zmienna unsigned, czyli od 0 do 255 a potem w forze
deklarujesz ja jako int czyli od 0 do 127.
ale to jest smieszne poniewaz powinien zadeklarowac od 0 do 32767,
przynajmniej tak jest w C, nie wiem jaki masz jezyk programowania, ale
to powinno pomoc
From: AW <AW_at_nospam_somehost.com>
Subject: Re: avr-gcc unsigned char
Date: Thu, 25 May 2006 14:16:07 +0000 (UTC)
Dnia 25.05.2006 Paweł <paw1976_at_nospam_poczta.onet.pl> napisał/a:
Jakiego typu użyć żeby mieć osiem bitów bez znaku?
Ja namietnie uzywam zmiennej typu uint8_t
AW
From: arkadiusz.antoniak_at_nospam_wp.pl
Subject: Re: avr-gcc unsigned char
Date: 25 May 2006 15:18:38 -0700
AW wrote:
Ja namietnie uzywam zmiennej typu uint8_t
Slusznie, jednak w AVR-GCC typ ten najpewniej powstaje tak:
typedef unsigned char uint8_t;
Sprawdz w types.h :).
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: avr-gcc unsigned char
Date: Fri, 26 May 2006 01:40:05 +0200
arkadiusz.antoniak_at_nospam_wp.pl napisał(a):
Ja namietnie uzywam zmiennej typu uint8_t
Slusznie, jednak w AVR-GCC typ ten najpewniej powstaje tak:
typedef unsigned char uint8_t;
Sprawdz w types.h :).
Akurat te standardowe typy leżą w inttypes.h (ew. stdint.h)
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.
From: arkadiusz.antoniak_at_nospam_wp.pl
Subject: Re: avr-gcc unsigned char
Date: 26 May 2006 08:00:06 -0700
Adam Dybkowski wrote:
arkadiusz.antoniak_at_nospam_wp.pl napisa=B3(a):
Ja namietnie uzywam zmiennej typu uint8_t
Slusznie, jednak w AVR-GCC typ ten najpewniej powstaje tak:
typedef unsigned char uint8_t;
Sprawdz w types.h :).
Akurat te standardowe typy le=BF=B1 w inttypes.h (ew. stdint.h)
looknalem do GMUARM-a ;). Widocznie tu jest inaczej
From: AW <AW_at_nospam_somehost.com>
Subject: Re: avr-gcc unsigned char
Date: Fri, 26 May 2006 06:36:56 +0000 (UTC)
Dnia 25.05.2006 arkadiusz.antoniak_at_nospam_wp.pl <arkadiusz.antoniak_at_nospam_wp.pl> napisał/a:
AW wrote:
Ja namietnie uzywam zmiennej typu uint8_t
Slusznie, jednak w AVR-GCC typ ten najpewniej powstaje tak:
typedef unsigned char uint8_t;
Sprawdz w types.h :).
Nie wazne gdzie, wazne ze dziala ;-)
A po co w ogole to tak jest zrobione?
AW
From: arkadiusz.antoniak_at_nospam_wp.pl
Subject: Re: avr-gcc unsigned char
Date: 26 May 2006 08:05:13 -0700
AW wrote:
Nie wazne gdzie, wazne ze dziala ;-)
jesli unsigned char z jakich tajemniczych powodow sprawia autorowi
problem, to uint8_t zefiniowany tak jak napisalem tez bedzie :)
A po co w ogole to tak jest zrobione?
Glownie po to, aby uniezaleznic sie od platformy. Nie ma reguly, ze
unsigned int jest np. 16-bitowy, choc na niektorych platformach wlasnie
tak jest. W ARM7 bedzie 32-bitowy itp. itd. unsigned char niemal
wszedzie jes 8 bitowy, ale 8-bitowosc to nie jest jego cecha
przyrodzona :). Jesli wiec cecha typu ma byc jego dlugosc bitowa, to
stosuje sie takie podejscie. Na innej platformie latwo to zmienic -
wystarczy podmienic plik z definicjami typow i nie trzeba zmieniac
calego programu.
From: =?ISO-8859-2?Q?Pawe=B3_Wi=EAcek?= <coven_at_nospam_vmh.net>
Subject: Re: avr-gcc unsigned char
Date: Fri, 26 May 2006 20:25:58 +0200
Thus wrote arkadiusz.antoniak_at_nospam_wp.pl:
tak jest. W ARM7 bedzie 32-bitowy itp. itd. unsigned char niemal
wszedzie jes 8 bitowy, ale 8-bitowosc to nie jest jego cecha
przyrodzona :). Jesli wiec cecha typu ma byc jego dlugosc bitowa, to
Z tym tylko, że tam, gdzie char nie jest ośmiobitowy nie znajdzie się
ośmiobitowego typu wcale -- bo standard języka narzuca, że char ma się mieścić
w pojedyńczym bajcie (który zazwyczaj jest ośmiobitowy, ale...).
Paweł
--
(___) | Pawel Wiecek ----------------- Coven / Svart --------------------- |
< o o > | http://www.coven.vmh.net/ <coven_at_nospam_vmh.net> GSM: +48603240006 |
\ ^ / | GPG/PGP info in message headers * [ Debian GNU/Linux developer ] |
(") | * * Eat shit -- billions of flies can't be wrong. * * |