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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-12-01T20:38:48+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=21639&amp;mode</id>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-12-01T20:38:48+01:00</updated>
<published>2018-12-01T20:38:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214226#p214226</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214226#p214226"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214226#p214226"><![CDATA[
Zawsze można dodać do linii poleceń kompilatora opcję <strong><em>-Wtype-limits</em></strong>, która powinna w takim przypadku spowodować wyświetlenie ostrzeżenia w stylu:<br /><em>&quot;comparison is always false due to limited range of data type&quot;</em>. Opcja ta jest też zawarta w zestawie opcji <em><strong>-Wextra</strong></em>.<br /><br />EDIT:<br />Jeszcze tylko małe sprostowanie:<br /><div class="quotetitle">skalarro napisał(a):</div><div class="quotecontent"><br />a program ochoczo będzie sprawdzał warunek za każdym obiegiem<br /></div><br />W tym przypadku nie będzie. Kod dokonujący porównania zostanie zoptymalizowany nawet przy wyłączonej optymalizacji. Tak samo nie zostanie w ogóle wygenerowany kod instrukcji wykonywanych w przypadku spełnienia warunku. Kompilator po prostu uzna, że sprawdzenie warunku zawsze zwróci fałsz.<br /><br />Warunek będzie za to sprawdzany mimo bezsensownego porównania w przypadku porównania dwóch zmiennych o różnych typach, przykładowo:<br />[syntax=c]volatile uint16_t zmienna_int = 3;<br /><br />// i w przerwaniu<br />zmienna++;<br />    if ( zmienna == (zmienna_int+500) )<br />    {<br />         PORTB = LED_TOG;<br />         zmienna = 0;<br />    }[/syntax]<br />Nastąpi tutaj promocja zmiennej <strong><em>zmienna</em></strong> do <em>int</em>, więc porównywane będą wartości 16-bitowe. W tej sytuacji wiadomo, że nie istnieje taka wartość zmiennej <strong><em>zmienna_int</em></strong> dla której porównanie mogłoby zwrócić prawdę (chyba, że wynik dodawania przekroczy zakres zmiennej 16-bitowej bez znaku), jednak w tym przypadku sprawdzanie warunku będzie się odbywać za każdym razem (praktycznie za każdym razem zwracając fałsz) i w dodatku żadne ostrzeżenie nie zostanie wygenerowane.<br /><br />Innymi słowami i tak trzeba się pilnować <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=14165">andrews</a> — 1 gru 2018, o 20:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2018-12-01T19:16:36+01:00</updated>
<published>2018-12-01T19:16:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214223#p214223</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214223#p214223"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214223#p214223"><![CDATA[
<div class="quotetitle">Zealota napisał(a):</div><div class="quotecontent"><br />Porównanie to oczywiście nie to samo co przypisanie wartości do zmiennej<br /></div><br />Dokładnie. I to jest chyba podsumowanie tematu. <br />Bo kto programiście zabroni porównania np tak abstrakcyjnego i pozbawionego sensu jak if (zmienna== &quot;elephant&quot;){};<br /><br />Można sprawdzić czy kolor_samochodu == kombi ;p<br />Oczywiście nie ma to sensu, typy niezgodne i nie mają prawa nigdy się zgodzić ale kompilator grzecznie to zaakceptuje a program ochoczo będzie sprawdzał warunek za każdym obiegiem... hehe<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 1 gru 2018, o 19:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-12-01T19:03:33+01:00</updated>
<published>2018-12-01T19:03:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214222#p214222</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214222#p214222"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214222#p214222"><![CDATA[
<div class="quotetitle">zorro napisał(a):</div><div class="quotecontent"><br />Chodził mi oto, że powołałem zmienną ośmio bitową a w przerwaniu w warunku if wpisałem wartość 500 i kompilator<br />nie wyświetlił mi błędu a skompilował. Ja myślałem, iż największą wartość jaką można wpisać to 255<br /></div><br />Wygląda na to, że w porównaniu kompilator nie sprawdza typu.<br /><br />Gdyby zapisać tak:<br />[syntax=c]uint8_t zmienna = 500;[/syntax]<br /><br />To dostaniemy ostrzeżenie. Porównanie to oczywiście nie to samo co przypisanie wartości do zmiennej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 1 gru 2018, o 19:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2018-12-01T18:55:28+01:00</updated>
<published>2018-12-01T18:55:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214221#p214221</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214221#p214221"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214221#p214221"><![CDATA[
<div class="quotetitle">zorro napisał(a):</div><div class="quotecontent"><br />Skąd się wzięło u was inkrementacja do 1.<br /></div><br /><br />[syntax=c]if ( zmienna == 500 );<br /> <br />     PORTB = LED_TOG;<br />     zmienna = 0;[/syntax]<br /><br />Przeanalizuj co robi Twój warunek...<br /><br />Albo zapisz go inaczej - będziesz widział co się dzieje&quot;<br /><br />[syntax=c]if ( zmienna == 500 ){<br /><br />}<br />      PORTB = LED_TOG;<br />     zmienna = 0;[/syntax]<br /><br />A teraz zobacz taki zapis:<br />[syntax=c]if ( zmienna == 500 ){<br />     PORTB = LED_TOG;<br />     zmienna = 0;<br />}[/syntax]<br /><br />Widzisz teraz skąd ta jedynka a nie 255 czy 500?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 1 gru 2018, o 18:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zorro]]></name></author>
<updated>2018-12-01T18:43:11+01:00</updated>
<published>2018-12-01T18:43:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214220#p214220</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214220#p214220"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214220#p214220"><![CDATA[
<div class="quotetitle">skalarro napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">zorro napisał(a):</div><div class="quotecontent">uint8_t zmienna = 0;  //w przerwaniu wpisuję<br />zmienna++;<br />   if ( zmienna == 500 );<br /> <br />     PORTB = LED_TOG;<br />     zmienna = 0;<br /></div><br /><br />jak dla mnie nie zachodzi tu żadna promocja do int tylko zmienna jedzie sobie do 255 i się przepełnia i nigdy nie osiąga 500. Nikt nie zabroni sprawdzać czy jest równa nawet 10000000 bo dlaczego by nie. Po prostu zawsze będzie fałszywy warunek i już. <br />Poza tym warunek if ( zmienna == 500 ); jest pusty a reszta jest poza warunkiem, czyli port się togluje cały czas a zmienna zeruje się  zawsze po 1.<br /><br />Lepiej byłoby tak, choć wg mnie i tak się nie wykona warunek<br />[syntax=c]zmienna++;<br />   if ( zmienna == 500 )<br /> {<br />     PORTB = LED_TOG;<br />     zmienna = 0;<br />}[/syntax]<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />A gdzie inkremenuję do wartości 1?<br /></div><br />w każdym obiegu pętli. Na początku masz zmienna=0, potem zmienna++<strong> czyli inkrementujesz do 1</strong>, potem pusty if, który i tak nigdy się nie wykona, następnie ZA KAŻDYM OBIEGIEM resetujesz zmienna.<br /> </div><br /><br />Inkrementacja zmiennej jest umieszczona w przerwaniu, więc w każdym przerwaniu wzrasta o wartość jeden.<br />Skąd się wzięło u was inkrementacja do 1.<br />Zmienna  zerowana jest po warunku if nie po każdym obiegu. Tak ja to widzę.<br /><br />Chodził mi oto, że powołałem zmienną ośmio bitową a w przerwaniu w warunku if wpisałem wartość 500 i kompilator<br />  nie wyświetlił mi błędu a skompilował. Ja myślałem, iż największą wartość jaką można wpisać to 255,<br />Jeden z kolegów wyjaśnił, iż to programista ma pilnować wartości wpisywanych do warunku if. <br />To co podałem w pierwszym poście to tylko wybrany fragment kodu.<br /><br />Dzięki wszystkim za wypowiedzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14587">zorro</a> — 1 gru 2018, o 18:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-12-01T12:48:04+01:00</updated>
<published>2018-12-01T12:48:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214214#p214214</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214214#p214214"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214214#p214214"><![CDATA[
<div class="quotetitle">skalarro napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">Zealota napisał(a):</div><div class="quotecontent">Ja oczywiście sprawdziłem pod kompilatorem i dlatego jestem mądrzejszy.<br /></div><br />No to muszę doczytać... DO tej pory żyłem w przekonaniu, że dotyczy to działań typu dodawanie i mnożenie dwóch zmiennych a nie zwykłego inkrementowania. ALe w sumie jakby się tak zastanowić to zmienna++ to też dodawanie dwóch liczb. <br />Nie zmienia to faktu, że w tym wypadku if się i tak nie wykona bo zmienna nie dojdzie nigdy nawet do 2, a warunek jest pusty</div><br /><br />Jeszcze hola hola.<br />Być może wczoraj trochę jednak niepotrzebnie zamieszałem, przepraszam <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Zrobiłem kolejne testy i na razie mojej tezy o tym, że dojdzie do warunku zmienna == 500, z powodu promocji do int, nie mogę wykazać niestety, pomimo pracy z kompilacją.<br />Zgodnie z sugestią Kolegi andrews również mnie się należy dokształcenie...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 1 gru 2018, o 12:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-12-01T11:55:19+01:00</updated>
<published>2018-12-01T11:55:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214213#p214213</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214213#p214213"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214213#p214213"><![CDATA[
Proponuję poczytać np. to (dość przystępny opis):<br /><!-- m --><a class="postlink" href="https://opensourceforu.com/2016/06/quick-look-integer-promotion-c/" >https://opensourceforu.com/2016/06/quic ... omotion-c/</a><!-- m --><br /><br />Ewentualnie wpisać  w Google &quot;c promotion rules&quot; i pojawi się sporo artykułów na ten temat.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 1 gru 2018, o 11:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2018-12-01T11:48:08+01:00</updated>
<published>2018-12-01T11:48:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214212#p214212</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214212#p214212"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214212#p214212"><![CDATA[
<div class="quotetitle">Zealota napisał(a):</div><div class="quotecontent"><br />Ja oczywiście sprawdziłem pod kompilatorem i dlatego jestem mądrzejszy.<br /></div><br />No to muszę doczytać... DO tej pory żyłem w przekonaniu, że dotyczy to działań typu dodawanie i mnożenie dwóch zmiennych a nie zwykłego inkrementowania. ALe w sumie jakby się tak zastanowić to zmienna++ to też dodawanie dwóch liczb. <br />Nie zmienia to faktu, że w tym wypadku if się i tak nie wykona bo zmienna nie dojdzie nigdy nawet do 2, a warunek jest pusty<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 1 gru 2018, o 11:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-12-01T11:39:16+01:00</updated>
<published>2018-12-01T11:39:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214208#p214208</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214208#p214208"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214208#p214208"><![CDATA[
<div class="quotetitle">skalarro napisał(a):</div><div class="quotecontent"><br />jak dla mnie nie zachodzi tu żadna promocja do int tylko zmienna jedzie sobie do 255<br /> <br /></div><br /><br />Proponuję najpierw sprawdzić, kompilując kod.<br />Ja oczywiście sprawdziłem pod kompilatorem i dlatego jestem mądrzejszy.<br />To najlepsza forma nauki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 1 gru 2018, o 11:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[skalarro]]></name></author>
<updated>2018-12-01T11:27:55+01:00</updated>
<published>2018-12-01T11:27:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214206#p214206</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214206#p214206"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214206#p214206"><![CDATA[
<div class="quotetitle">zorro napisał(a):</div><div class="quotecontent"><br />uint8_t zmienna = 0;  //w przerwaniu wpisuję<br />zmienna++;<br />   if ( zmienna == 500 );<br /> <br />     PORTB = LED_TOG;<br />     zmienna = 0;<br /></div><br /><br />jak dla mnie nie zachodzi tu żadna promocja do int tylko zmienna jedzie sobie do 255 i się przepełnia i nigdy nie osiąga 500. Nikt nie zabroni sprawdzać czy jest równa nawet 10000000 bo dlaczego by nie. Po prostu zawsze będzie fałszywy warunek i już. <br />Poza tym warunek if ( zmienna == 500 ); jest pusty a reszta jest poza warunkiem, czyli port się togluje cały czas a zmienna zeruje się  zawsze po 1.<br /><br />Lepiej byłoby tak, choć wg mnie i tak się nie wykona warunek<br />[syntax=c]zmienna++;<br />   if ( zmienna == 500 )<br /> {<br />     PORTB = LED_TOG;<br />     zmienna = 0;<br />}[/syntax]<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />A gdzie inkremenuję do wartości 1?<br /></div><br />w każdym obiegu pętli. Na początku masz zmienna=0, potem zmienna++ czyli inkrementujesz do 1, potem pusty if, który i tak nigdy się nie wykona, następnie ZA KAŻDYM OBIEGIEM resetujesz zmienna.<br /> <p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4850">skalarro</a> — 1 gru 2018, o 11:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zorro]]></name></author>
<updated>2018-12-01T10:54:38+01:00</updated>
<published>2018-12-01T10:54:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214205#p214205</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214205#p214205"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214205#p214205"><![CDATA[
<div class="quotetitle">Piotrek_P napisał(a):</div><div class="quotecontent"><br />W drugiej linii Twojego kodu, nie widzisz tego?;-)<br /></div><br />Tak w drugiej linii inkrementuję zmienną, ale nie do jednego a do 500.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14587">zorro</a> — 1 gru 2018, o 10:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Piotrek_P]]></name></author>
<updated>2018-12-01T09:30:27+01:00</updated>
<published>2018-12-01T09:30:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214203#p214203</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214203#p214203"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214203#p214203"><![CDATA[
W drugiej linii Twojego kodu, nie widzisz tego?;-)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=290">Piotrek_P</a> — 1 gru 2018, o 09:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zorro]]></name></author>
<updated>2018-12-01T08:35:59+01:00</updated>
<published>2018-12-01T08:35:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214202#p214202</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214202#p214202"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214202#p214202"><![CDATA[
<div class="quotetitle">Zealota napisał(a):</div><div class="quotecontent"><br />To jest właśnie siła języka C. Tu rządzi programista, ale niestety musi wiedzieć co robi, dlatego też zasady dotyczące wielkości zmiennych są bardzo elastyczne, a jedna z większej elastyczności to domyślna <strong>promocja do int.</strong><br />Inaczej pisząc, to programista musi kontrolować zakres typów, a nie kompilator. Dzięki temu można robić &quot;różne sztuczki&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br />Nie rozumiem dlaczego promocja do int, skoro powołana zmienna jest określona <strong>uint8_t </strong><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br /><div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />hmm...<br />ja nie wiem dlaczego nie krzyczy. <br />[syntax=c]uint8_t zmienna = 0;  //w przerwaniu wpisuję<br />    zmienna++;<br />       if ( zmienna == 500 );<br />     <br />         PORTB = LED_TOG;<br />         zmienna = 0;[/syntax]<br />powołujesz zmienną z wartością 0,<br /><strong>inkrementujesz do wartości 1,</strong><br />oczekujesz na spełnienie 'ifa' który który nigdy się nie spełni, by ustawić wartość na PORTB.<br />poza ifem: zerujesz zmienną.<br /><br />hmm. ale dlaczego nie krzyczy? <br />może dlatego że nie przypisujesz takiej wartości do zmiennej, a sprawdzać w ifie  można cokolwiek <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><br /><img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br />A gdzie inkremenuję do wartości 1?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14587">zorro</a> — 1 gru 2018, o 08:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-11-30T21:49:43+01:00</updated>
<published>2018-11-30T21:49:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214200#p214200</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214200#p214200"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214200#p214200"><![CDATA[
Wg mnie nie krzyczy, bo w linijce:<br />[syntax=c]if ( zmienna == 500 );[/syntax]<br />właściwie to jest:<br />[syntax=c]if ( (int)zmienna == 500 );[/syntax]<br /><br />oprócz tego tam jest niepotrzebny średnik.<br />Dodatkowo promocja do int jednak zapewni, że warunek się spełni.<br />Można rzutować na int8_t i wtedy już nie będzie działać.<br />Tak z praktyki dopiero ostatnio widzę, co było dla mnie długo mgliste, ten wszędobylski int <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Nie potrafię już na to patrzeć, że co chwilę trzeba rzutować, żeby nie przekroczyć zakresu int dla dużych liczb, a to powoduje farfocle, oczopląsy i długaśne linijki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Przy AVR to zwykle, żaden problem, bo tam rządzi uint8_t, ale przy tych stm,ach to już trzeba się strzec <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 30 lis 2018, o 21:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-11-30T21:47:30+01:00</updated>
<published>2018-11-30T21:47:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214199#p214199</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214199#p214199"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214199#p214199"><![CDATA[
<div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />ja nie wiem dlaczego nie krzyczy.<br /></div><br />A dlaczego miałby krzyczeć? Co szkodzi porównywać zawartość bajtu ze słowem ? Toż w zakresie 0-255 pokrywają się ich wartości <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... poza tym to co pisze wyżej kolega Zealota.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 lis 2018, o 21:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-11-30T20:08:11+01:00</updated>
<published>2018-11-30T20:08:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214194#p214194</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214194#p214194"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214194#p214194"><![CDATA[
hmm...<br />ja nie wiem dlaczego nie krzyczy. <br />[syntax=c]uint8_t zmienna = 0;  //w przerwaniu wpisuję<br />    zmienna++;<br />       if ( zmienna == 500 );<br />     <br />         PORTB = LED_TOG;<br />         zmienna = 0;[/syntax]<br />powołujesz zmienną z wartością 0,<br />inkrementujesz do wartości 1,<br />oczekujesz na spełnienie 'ifa' który który nigdy się nie spełni, by ustawić wartość na PORTB.<br />poza ifem: zerujesz zmienną.<br /><br />hmm. ale dlaczego nie krzyczy? <br />może dlatego że nie przypisujesz takiej wartości do zmiennej, a sprawdzać w ifie  można cokolwiek <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /><br /><img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 30 lis 2018, o 20:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-11-30T20:07:15+01:00</updated>
<published>2018-11-30T20:07:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214193#p214193</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214193#p214193"/>
<title type="html"><![CDATA[Re: Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214193#p214193"><![CDATA[
To jest właśnie siła języka C. Tu rządzi programista, ale niestety musi wiedzieć co robi, dlatego też zasady dotyczące wielkości zmiennych są bardzo elastyczne, a jedna z większej elastyczności to domyślna promocja do int.<br />Inaczej pisząc, to programista musi kontrolować zakres typów, a nie kompilator. Dzięki temu można robić &quot;różne sztuczki&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 30 lis 2018, o 20:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zorro]]></name></author>
<updated>2018-11-30T19:53:58+01:00</updated>
<published>2018-11-30T19:53:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214192#p214192</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214192#p214192"/>
<title type="html"><![CDATA[Zmienna większa od uint8_t]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21639&amp;p=214192#p214192"><![CDATA[
Proszę o wyjaśnienie takiego zapisu:<br />Powołuję zmienną<br /><br />[syntax=c]uint8_t zmienna = 0;  //w przerwaniu wpisuję<br />zmienna++;<br />   if ( zmienna == 500 ); <br /><br />     PORTB = LED_TOG;<br />     zmienna = 0;[/syntax]<br /><br />Dlaczego to się kompiluje skoro powołana zmienna jest ośmio bitowa?<br />To jest kawałek programu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14587">zorro</a> — 30 lis 2018, o 19:53</p><hr />
]]></content>
</entry>
</feed>