<?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=4&amp;t=11430&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-04-22T17:20:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11430&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-04-22T17:20:02+01:00</updated>
<published>2015-04-22T17:20:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127170#p127170</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127170#p127170"/>
<title type="html"><![CDATA[Re: typ int nie przepełnia się po 32767?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127170#p127170"><![CDATA[
<div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />Eh.. żeś namieszał <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> Ale fajnie, ciekawa dyskusja wynikła i mogłem sobie przypomnieć jak to dziwnie z tymi typami jest <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /></div><br />Nie chcę mówić, że wyszło na moje <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... to tak pół żartem mówię - bo doceniam twoje mega cenne (jak zwykle zresztą wskazówki, linki itp) ... ale tutaj no jakby nie patrzeć kompilator zachował się całkowicie przewidywalnie - jak dla mnie, i fajnie. Ale tak jak mówisz - ty sobie przypomniałeś mega zaawansowane rzeczy a nam maluczkim podpowiedziałeś i wskazałeś gdzie należy patrzeć - gdy spotkamy się z takim problemem w innym kompilatorze. Dlatego też uważam tę dyskusję za bardzo cenną - już nie mówiąc o tym, że fajnie - że jesteś pan - panie mokrowski z nami na forum <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... Rzekłbym skarbnica wiedzy w tobie i to otwarta ... Ja dziękuję za garść cennych informacji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 22 kwi 2015, o 17:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-04-21T13:16:51+01:00</updated>
<published>2015-04-21T13:16:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127090#p127090</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127090#p127090"/>
<title type="html"><![CDATA[Re: typ int nie przepełnia się po 32767?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127090#p127090"><![CDATA[
<div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />Może interpretowana owszem, ale jak wyświetlona?. Tu jest ,,meksyk&quot;<br /></div><br />No ok <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... jak mówię nie bawiłem się innymi kompilatorami to ciężko mi się wypowiadać ale tym bardziej ciekaw jestem co tam ma Antystatyczny w środku swojego lcd_int() ? <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> — 21 kwi 2015, o 13:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-04-21T08:37:51+01:00</updated>
<published>2015-04-21T08:37:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127074#p127074</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127074#p127074"/>
<title type="html"><![CDATA[Re: typ int nie przepełnia się po 32767?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127074#p127074"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />Zresztą sam nigdy nie zostawiałem zmiennych samej sobie<br /></div><br />Ale my tu mówimy o konkretnym przypadku <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />tj. nie świadomie<br /></div><br />Wiesz ... to ja słyszałem taką teorię, że jeśli w programie zostanie przekroczona pewna ilość if()'ów to wtedy program zaczyna żyć własnym życiem <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 kwi 2015, o 08:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2015-04-21T08:06:47+01:00</updated>
<published>2015-04-21T08:06:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127072#p127072</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127072#p127072"/>
<title type="html"><![CDATA[Re: typ int nie przepełnia się po 32767?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127072#p127072"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />Nie mniej ciekaw jestem czy potwierdzicie, że inny kompilator w przykładach które wyżej podałem zachowa się tak - że pokaże liczbę dodatnią zamiast ujemnej ? Pytam bo nie za wiele kompilatorów C używałem.<br /></div><br /><br />Ja też nie jestem jakiś tam super doświadczony, ale wiem że trzeba było tego pilnować, bo na PC było inaczej, na 8051 też.<br /><br />Zresztą sam nigdy nie zostawiałem zmiennych samej sobie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />, tj. nie świadomie <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><p>Statystyki: Napisane przez Gość — 21 kwi 2015, o 08:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-04-21T08:01:27+01:00</updated>
<published>2015-04-21T08:01:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127069#p127069</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127069#p127069"/>
<title type="html"><![CDATA[Re: typ int nie przepełnia się po 32767?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127069#p127069"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />bo int w systemie 8 bitowym to nie to samo co w 32 czy 64 bitowym<br /></div><br />Wydaje mi się (podkreślam wydaje) <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> , że to samo jeśli chodzi o sposób działania/obsługi .... a to że technicznie się różnią bo mają różne pojemności (w bajtach) no to już całkiem inna bajka ...<br /><br />Nie mniej ciekaw jestem czy potwierdzicie, że inny kompilator w przykładach które wyżej podałem zachowa się tak - że pokaże liczbę dodatnią zamiast ujemnej ? Pytam bo nie za wiele kompilatorów C używałem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 kwi 2015, o 08:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2015-04-21T07:47:27+01:00</updated>
<published>2015-04-21T07:47:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127067#p127067</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127067#p127067"/>
<title type="html"><![CDATA[Re: typ int nie przepełnia się po 32767?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127067#p127067"><![CDATA[
Mówiąc słowami laika.<br /><br />Za każdym razem zmieniając kompilator trzeba dowiedzieć się jak są reprezentowane liczby, bo int w systemie 8 bitowym to nie to samo co w 32 czy 64 bitowym, to jest zależne mocno od samego systemu.<br /><br />Podobnie stwierdzenie użyj notacji U2, wymaga odpowiedniego traktowania przez użytkownika liczby, ewentualnie zastosowanie odpowiednich narzędzi kompilatora by ta prezentacja U2 była interpretowana jak U2.<br /><br />Niby prosta rzecz, a jak widać nie do końca.<p>Statystyki: Napisane przez Gość — 21 kwi 2015, o 07:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-04-21T07:33:51+01:00</updated>
<published>2015-04-21T07:33:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127065#p127065</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127065#p127065"/>
<title type="html"><![CDATA[Re: typ int nie przepełnia się po 32767?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127065#p127065"><![CDATA[
<div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />Mirek, być może źle zrozumiałem Twoją wypowiedź, ale nie zgadzam się co do jednego.<br /></div><br />To może ja inaczej powiem, ale tzn dopytam bo może ja nie wiem ...<br /><br />przykładowy kod:<br /><br />[syntax=c]int a=32760;<br />while(1) {<br />lcd_locate(0,0);<br />lcd_int( a++ );<br />_delay_ms( 800 );<br />}[/syntax]<br /><br />jaka liczba się wyświetli na LCD gdy a dojdzie do wartości (teoretycznie wg nas) do 32768 ?<br /><br />zakładając, że lcd_int() zbudowana jest mniej więcej tak:<br /><br />[syntax=c]void lcd_int(int val)<br />{<br />char bufor&#91;17&#93;;<br />lcd_str( itoa(val, bufor, 10) );<br />}[/syntax]<br /><br />Wg tego co pisałem wyżej oczywistym (tzn dla mnie oczywistym jest), że wyświetli się -32768<br /><br />I teraz uwaga - ja myślę i mówię tylko w kategoriach AVR GCC więc absolutnie nie twierdzę, że to dotyczy wszystkich innych kompilatorów bo po prostu nie wiem, a jak nie wiem to nie będę się mądrzył <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Jednak na podstawie tak prostej analogii wydaje mi się (hmmm wydawało mi się), że każdy kompilator tak się zachowa w tym opisanym teraz wyżej przeze mnie przypadku. <br /><br />dlatego proszę potwierdź/rozwiej moje wątpliwości ok ?<br /><br />Naturalnie zgadzam się, że trzeba ZAWSZE pilnować typów ale nie spodziewałbym się wręcz, że kompilator będzie robił mi w przypadku powyżej psikusa i pokaże liczbę dodatnią ? .... Przy czym wyświetlanie to pal pies ... gorzej gdyby w warunkach jakichś np if() miało to się tak rąbać ...<br /><br />stąd ciekaw też jestem jak to się ostatecznie zachowuje w kompilatorze u Antystatycznego teraz ? <br /><br /><div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />No bo co się może dziać jeśli INT będzie indeksem? Po osiągnięciu 32767, skoczy na wartość ujemną która będzie poza tablicą.<br /></div><br />I jeszcze jedno - może rzeczywiście zrobiłem skrót myślowy i pisząc, że nie trzeba pilnować typów nawet przez myśl mi nie przeszło, żeby w takiej sytuacji nie pilnować <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... Podałem wyżej przykład - chodziło mi o pilnowanie w takich prostych przykładach porównania - i ciekaw jestem czy zgadłem , że np u Antystatycznego ta liczba dodatnia pojawiała się dlatego że u niego np lcd_int() wyglądał tak:<br /><br />[syntax=c]void lcd_int( unsigned int val)<br />{<br />char bufor&#91;17&#93;;<br />lcd_str( utoa(val, bufor, 10) );<br />}[/syntax]<br /><br />Bo chyba to oczywiste, że w takim wypadku to normalne że zobaczymy 32768 po przekroczeniu zmiennej counter (z pierwszego przykładu) a nie -32768<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />Notacja U2 (z uzupełnieniem do 2), tak opracowano by operacje ze znakami (+/-...), kończyły się bezpiecznie ,,w objętości danego typu&quot;.<br /></div><br />O! mi chodziło bardziej o to właśnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> że pod tym względem nie trzeba pilnować<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 kwi 2015, o 07:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-04-20T21:50:11+01:00</updated>
<published>2015-04-20T21:50:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127055#p127055</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127055#p127055"/>
<title type="html"><![CDATA[Re: typ int nie przepełnia się po 32767?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127055#p127055"><![CDATA[
<div class="quotetitle">Antystatyczny napisał(a):</div><div class="quotecontent"><br />czyli pilnuję we własnym zakresie, by int nie przekroczył wartości 32767<br /></div><br />Ależ nic nie pilnujesz we własnym zakresie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... int nigdy nie przekroczy 32767 <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">Antystatyczny napisał(a):</div><div class="quotecontent"><br />            counter++;//   &lt;-----int, a mimo to nalicza do 65535<br />            lcd_locate(1,0);<br />            lcd_int(counter);//zastosowana funkcja itoa<br /></div><br />Nic nie nalicza do 65535 - tylko zajrzyj pan do funkcji lcd_int() <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... boć przecież jeśli masz w niej np (strzelam tak) argument typu uint16_t czy tam unsigned int, albo w środku jeszcze inną funkcję np utoa() .... to ty się nie dziw, że gubisz swój typ int, wpuszczasz go w maszynkę do mielenia mięsa, która przerabia go na kotlet bez znaku ... i tylko tak wyświetla ....<br /><br />przecież typy to rzecz umowna a bity działają tak jak wyżej mokrowski napisał w U2. I to ty musisz wiedzieć jakimi typami po drodze operujesz<br /><br />przemyśl co się stanie gdy napiszesz tak<br /><br /><br />[syntax=c]int counter;<br />unsigned int zmienna - counter;<br /><br />//... jakaś pętla<br />zmienna++;<br />if( zmienna &gt; 32767 ) .... // nie będzie warninga i prawidłowo zadziała[/syntax]<br /><br />a przemyśl co będzie gdy napiszesz:<br /><br />[syntax=c]int counter;<br /><br />//... jakaś pętla<br />counter++;<br />if( counter&gt; 32767 ) .... // będzie warning i prawidłowo[/syntax]<br /><br />A jak chcesz prawidłowo wyświetlać int w <strong><span style="color: #0080FF">lcd_int()</span></strong> to jak mówię zajrzyj do funkcji lcd_int() i sprawdź wszystkie trybiki tej maszynki <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> — 20 kwi 2015, o 21:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2015-04-20T19:21:55+01:00</updated>
<published>2015-04-20T19:21:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127039#p127039</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127039#p127039"/>
<title type="html"><![CDATA[Re: typ int nie przepełnia się po 32767?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=127039#p127039"><![CDATA[
Sanuję za spostrzeżenie i wskazanie nieścisłości jakie wynikają przy interpretacji wyników pracy maszyn cyfrowych.<br />Liczba 32767 = 7FFF, jest 15-to bitowa. To, to co obchodzi rejestr TCNT(16-bitowy), że obserwator monitora ma błędny odczyt.<br />A niech se stosuje ltoa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9272">Wirnick</a> — 20 kwi 2015, o 19:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ryba84]]></name></author>
<updated>2015-04-20T07:46:10+01:00</updated>
<published>2015-04-20T07:46:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=126985#p126985</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=126985#p126985"/>
<title type="html"><![CDATA[Re: typ int nie przepełnia się po 32767?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=126985#p126985"><![CDATA[
Skoro counter jest liczbą int ze znakiem to nigdy nie będzie większy od 32767. Dlatego masz warninga.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3170">ryba84</a> — 20 kwi 2015, o 07:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2015-04-19T15:44:51+01:00</updated>
<published>2015-04-19T15:44:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=126915#p126915</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=126915#p126915"/>
<title type="html"><![CDATA[Re: typ int nie przepełnia się po 32767?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11430&amp;p=126915#p126915"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />W przypadku zmiennych ze znakiem sam muszę pilnować ich maksymalnej wartości?<br /></div><br /><br />Z mojego (maluśkiego) doświadczenia programistycznego wiem, że każdy kompilator/system ma swoje zakresy zmiennych. Tj. nie jest tak ze w każdym int będzie oznaczał +-32768<br /><br />Sprawdź przez sizeof rzeczywistą wielkość int w twoim systemie tj. w kompilatorze PICa.<p>Statystyki: Napisane przez Gość — 19 kwi 2015, o 15:44</p><hr />
]]></content>
</entry>
</feed>