<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=8&amp;t=1836&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-11-25T18:38:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=1836&amp;mode</id>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-11-25T18:38:32+01:00</updated>
<published>2012-11-25T18:38:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19532#p19532</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19532#p19532"/>
<title type="html"><![CDATA[Re: Czy w C można ustawić zakres zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19532#p19532"><![CDATA[
Nie no pewnie że rozumiem..<br />pierwszy przypadek uint8_t a drugi char..<br /><br />Najbardziej pomogło mi to:<br />typedef uint8_t unsigned char <br /><br />Dzięki za wyjaśnienie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 25 lis 2012, o 18:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-25T18:29:25+01:00</updated>
<published>2012-11-25T18:29:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19531#p19531</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19531#p19531"/>
<title type="html"><![CDATA[Re: Czy w C można ustawić zakres zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19531#p19531"><![CDATA[
<div class="quotetitle">GwynBleidD napisał(a):</div><div class="quotecontent"><br />W teorii char i uint8_t na AVRach to to samo, ale w praktyce jest pewna konwencja, że w char trzyma się wartości znakowe (czyli napisy różne), a w uint8_t liczbowe.<br /></div><br /><br />xarmex - jak widzisz - JEST różnica, a tą różnicą jest właśnie ta KONWENCJA, zasada czy jak ją zwał. Wbrew pozorom w programowaniu w C takie rzeczy są istotne dla poprawnego pisania kodu. A w skrócie można powiedzieć, że typ uint8_t powstaje tak:<br /><br />typedef uint8_t unsigned char<br /><br />rozumiesz ? czyli z punktu widzenia fizycznych operacji na tych dwóch TYPACH nie ma żadnych różnic, ale konwencja i umowne stosowanie ich we właściwych przypadkach jest pożądane, a przez tak wielu (sorry za brzydkie słowo) olewane <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />np jaki typ wstawiłbyś w miejsce XXX, char czy uint8_t ?<br /><br />[syntax=c]XXX i;<br />for( i=0; i&lt;10; i++ ) ....[/syntax]<br /><br />a tutaj:<br /><br />[syntax=c]XXX tab[] = &quot;forum&quot;;[/syntax]<br /><br />jeśli poprawnie odpowiesz na te dwa pytania to zrozumiałeś <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> jak nie to pytaj dalej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 25 lis 2012, o 18:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-11-25T18:12:21+01:00</updated>
<published>2012-11-25T18:12:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19530#p19530</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19530#p19530"/>
<title type="html"><![CDATA[Re: Czy w C można ustawić zakres zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19530#p19530"><![CDATA[
<div class="quotetitle">GwynBleidD napisał(a):</div><div class="quotecontent"><br />W teorii char i uint8_t na AVRach to to samo, ale w praktyce jest pewna konwencja, że w char trzyma się wartości znakowe (czyli napisy różne), a w uint8_t liczbowe. Dzięki temu wiadomo na pierwszy rzut oka jakie zadanie ma dana zmienna, dodatkowo wiele funkcji właśnie ma określony odpowiedni z tych typów na wejściu, więc nie trzeba rzutować.<br /><br />Teraz jaśniej?<br /></div><br /><strong>Czyli nie ma ŻADNEJ różnicy między char a uint8_t?</strong><br /><br />Jednynie informacja dla mnie że w char powinien być znak?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 25 lis 2012, o 18:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2012-11-25T17:18:48+01:00</updated>
<published>2012-11-25T17:18:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19527#p19527</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19527#p19527"/>
<title type="html"><![CDATA[Re: Czy w C można ustawić zakres zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19527#p19527"><![CDATA[
Możesz przecież zadeklarować swój własny typ do tego, wyliczeniowy. Np. miejsce w tablicy połączone z typem wyliczeniowym i masz problem rozwiązany. Czy char, czy uint8_t to już zależy czy chcesz trzymać w tablicy nazwy dni, miesięcy itd. czy np. stałe które definiują miejsce w tablicy umieszczonej w progmem.<br />Ewentualnie od razu wrzucasz tablicę z nazwami dni, a potem odwołujesz się do nich przez typ wyliczeniowy. Wtedy tablica jest złożona z znaków czyli typów char.<p>Statystyki: Napisane przez Gość — 25 lis 2012, o 17:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2012-11-25T17:09:48+01:00</updated>
<published>2012-11-25T17:09:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19526#p19526</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19526#p19526"/>
<title type="html"><![CDATA[Re: Czy w C można ustawić zakres zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19526#p19526"><![CDATA[
A to może ja się jeszcze dołączę.<br />Jak wiadomo char oraz uint8_t jest 8biotwa I przyjmuje wartości(0-255)<br /><br />Jeśli robimy np. jakąś tablicę np. z dniami tygodnia<br />To używamy <strong>char</strong> nazwatablicy<br />A nie <strong>uint8_t</strong><br /><br />Czy to ma jakieś znaczenie, czy użyje się char czy uint8_t ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 25 lis 2012, o 17:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[saly]]></name></author>
<updated>2012-11-25T10:34:08+01:00</updated>
<published>2012-11-25T10:34:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19488#p19488</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19488#p19488"/>
<title type="html"><![CDATA[Re: Czy w C można ustawić zakres zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19488#p19488"><![CDATA[
Dzięki tak też zrobiłem myślałem, że można innaczej.<br />Wiem że zmienna zawiera określoną ilość miejsca w rejestrze i nie można tego zmienić.<br />Nie zajmuje więcej czasu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=618">saly</a> — 25 lis 2012, o 10:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-25T10:31:01+01:00</updated>
<published>2012-11-25T10:31:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19487#p19487</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19487#p19487"/>
<title type="html"><![CDATA[Re: Czy w C można ustawić zakres zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19487#p19487"><![CDATA[
No tak - ale już wytłumaczyłem dlaczego tak nie można i to w żadnym języku programowania. A co to za komplikacja w kodzie dodać po jednej linijce<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">a+=5;<br />if(a&gt;100) a=100;</div><br /><br />takie coś występuje i stosuje się w każdym języku programowania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 25 lis 2012, o 10:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[saly]]></name></author>
<updated>2012-11-25T10:21:10+01:00</updated>
<published>2012-11-25T10:21:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19486#p19486</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19486#p19486"/>
<title type="html"><![CDATA[Re: Czy w C można ustawić zakres zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19486#p19486"><![CDATA[
Steruje przykładowo za pomocą zmiennej &quot;a&quot; (8 bitowej) termostatem, i na wyświetlaczu wchodzę w menu,<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">      void przyciski(void) <br />     {<br />     if(SW_DOWN)   //naciśnięcie switcha DOWN<br />     {a-=5;            // zmniejsz temp. zadaną o 5`C<br />      _delay_ms(5);}<br />      while(SW_DOWN);<br />         <br />     if(SW_UP)<br />     {a+=5;<br />      _delay_ms(5);}<br />      while(SW_UP);<br />     } </div><br /><br />ustawiam przyciskami UP/DOWN np. 45`C zmianiam na 60`C, tylko chodzi mi o to żeby np. jak będę zwiększał przyciskiem UP nie móc zwiększyć temperatury zadanej czyli zmiennej &quot;a&quot;, więcej niż do 100`C, bo  jak będę wielokrotnie naciskał UP to przekrocze to 100 i wejdę nawet na 255, a zakres mojego termostatu jest 30 - 100`C<br />Napisałem sobie formułe która programowo nie pozwala zwiększać zmiennej &quot;a&quot; jeśli ta np. osiągnie już 100st. myślałem że da się to ograniczyć już przy samej definicji zmiennej na samym początku programu, żeby późnieje nie komplikować kodu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=618">saly</a> — 25 lis 2012, o 10:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-11-25T09:07:21+01:00</updated>
<published>2012-11-25T09:07:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19484#p19484</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19484#p19484"/>
<title type="html"><![CDATA[Re: Czy w C można ustawić zakres zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19484#p19484"><![CDATA[
Tzn pytanie wynika troszkę z niezrozumienia typów. <br /><br />typy zmiennych nie zostały wymyślone po to aby wprowadzać jakieś tam sztuczne ograniczenia. Wiążą się one ściśle z ilością BAJTÓW które przypadają na dany typ. Przy czym nazwa typu jest ściśle umowna.<br /><br />a zatem, jaki zakres uzyskasz w jednym bajcie ???<br /><br />chyba rozumiesz, że chcąc nie chcąc od 0 do 255 bo to wynika z wag poszczególnych bitów<br /><br />128+64+32+16+8+4+2+1<br /><br />i teraz nie ważne czy nazwiesz ten typ: unsigned char, uint8_t itd - to zawsze musisz pamiętać że jej zakres zależy od ilości bajtów. Skoro jest jeden to masz od 0 do 255<br /><br />jeśli weźmiesz dwa bajty, to wtedy masz od 0 do 65535<br /><br />no ale tu mówimy o liczbach całkowitych bez znaku. Tymczasem jak weźmiesz sobie np typ:<br /><br />char czy int8_t to masz zakres od -128 do 127<br /><br />jeśli typ: int lub int16_t to masz zakres od -32768 do 32767<br /><br />więc rozumiesz już chyba, że nie ma tu mowy o jakichś innych ograniczeniach niż rozmiary związane z bajtami. Całą resztę robisz sobie programowo i wcale nie musi to zależeć od jakichś klawiszy - jak piszesz wyżej. W dowolnej części programu możesz to robić. Żeby to lepiej zrozumieć spróbuj sobie prześledzić jak wyglądają binarne postaci takich liczb (typów), dla uproszczenia weźmy tylko 4 bity<br /><br />0000 - 0<br />0001 - 1<br />0010 - 2<br />0011 - 3<br />0100 - 4<br />0101 - 5<br />0110 - 6<br />0111 - 7<br />1000 - 8<br />1001 - 9<br />1010 - 10<br />1011 - 11<br />1100 - 12<br />1101 - 13<br />1110 - 14<br />1111 - 15<br /><br /><img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... czyli liczby od 0 do 15. Gdyby był taki typ to taki miałby zakres. Wiadomo że jeśli do<br /><br />1111 + 1 = 0000<br /><br />dlatego się licznik przekręca<br /><br />a jak sobie wyobrażasz teraz np ograniczenie tego zakresu do np od 0 do 11 ???, przecież jeśli<br /><br />1011 + 1<br /><br />to będzie się to równać<br /><br />1100 czyli = 12<br /><br />więc żeby robić takie ograniczenia to procesory musiałyby mieć co ? wszczepione jakieś moduły sprzętowe do pilnowania tych zakresów ? a co z typami ? z językami ? sprzęt to sprzęt i jest niezależny od języka w tym względzie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />teraz jaśniej ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 25 lis 2012, o 09:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[saly]]></name></author>
<updated>2012-11-25T08:49:15+01:00</updated>
<published>2012-11-25T08:49:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19483#p19483</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19483#p19483"/>
<title type="html"><![CDATA[Czy w C można ustawić zakres zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1836&amp;p=19483#p19483"><![CDATA[
Witam <br />Czy można ustawić w C zakres zmiennej, np. dla 16bitowej zmiennej  unsignet int (0-65535),chciałby żeby np. zmieniała się w programie tylko w zakresie 0-2000, wiem że mogę to zadeklarować w fragmencie programu np. przy obsłudze zwiększania/zmniejszania zmiennej za pomocą klawiszy, ale czy można to zrobić na samym początku programu kiedy deklarujemy np.<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">unsignet int  a;</div> <br />żeby już na początku zagrodzić możliwość występowania jej w przykładowym przedziale 0-2000.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=618">saly</a> — 25 lis 2012, o 08:49</p><hr />
]]></content>
</entry>
</feed>