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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-02-08T23:20:49+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14547&amp;mode</id>
<entry>
<author><name><![CDATA[TomekTomek55]]></name></author>
<updated>2017-02-08T23:20:49+01:00</updated>
<published>2017-02-08T23:20:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=182175#p182175</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=182175#p182175"/>
<title type="html"><![CDATA[Re: Rzutowanie typów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=182175#p182175"><![CDATA[
Ok o to chodziło dzieki<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4629">TomekTomek55</a> — 8 lut 2017, o 23:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-02-08T08:20:56+01:00</updated>
<published>2017-02-08T08:20:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=182049#p182049</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=182049#p182049"/>
<title type="html"><![CDATA[Re: Rzutowanie typów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=182049#p182049"><![CDATA[
No bo ty chcesz zrobić wskaźnik z wartości zmiennej i ... a przecież masz tylko przekazać wskaźnik na zmienną czyli jej adres<br /><br />[syntax=c]Uzupelnianie( &amp;i );[/syntax]<br /><br />i kompilator już nie krzyczy, bo przekazałeś właśnie adres do pamięci do komórki w której znajduje się wartość<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 8 lut 2017, o 08:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[TomekTomek55]]></name></author>
<updated>2017-02-08T00:59:51+01:00</updated>
<published>2017-02-08T00:59:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=182038#p182038</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=182038#p182038"/>
<title type="html"><![CDATA[Re: Rzutowanie typów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=182038#p182038"><![CDATA[
Chciałem odświeżyć watek rzutowania bo mam problem z przekazaniem do pewnej funkcji wskaźnika na zmienna bajtowa.<br />[syntax=c]void Uzupelnianie(uint8_t *liczba);<br /><br />void Uzupelnianie(uint8_t *liczba){<br />  //tutaj cialo funkcji ...<br />}<br /><br /><br />//Oto wywołanie które zawiera ostrzeżenie<br />uint8_t i=23;<br />Uzupelnianie((uint8_t*) i );  //kompilator generuje ostrzeżenie dla tej linijki<br />                                      //warning: cast to pointer from integer of different size &#91;-Wint-to-pointer-cast&#93;[/syntax]<br /><br />Można poprosić o poprawienie błedu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4629">TomekTomek55</a> — 8 lut 2017, o 00:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[drewpol]]></name></author>
<updated>2016-02-17T09:07:09+01:00</updated>
<published>2016-02-17T09:07:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153894#p153894</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153894#p153894"/>
<title type="html"><![CDATA[Re: Rzutowanie typów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153894#p153894"><![CDATA[
<div class="quotetitle">APAP75 napisał(a):</div><div class="quotecontent"><br />Powiem szczerze, nie wiem jak zachowa się wynik, gdy funkcja pomiar(5) zwróci wartość ujemną i to  dużą - w granicach swojego zakresu, skoro kompilator ma 100 traktować jaku uint - bez znaku.<br /></div><br />Zdecydowałem się na taki zapis ponieważ funkcja pomiar(5) to odczyt ADC i najmniejszą zwróconą wartością może być 0 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><div class="quotetitle">APAP75 napisał(a):</div><div class="quotecontent"><br />Nie ważne, że potem dzielisz - pierwsze wykonywane jest mnożenie i ten wynik trzeba jakoś przechować.<br />Kolejna sprawa uint ma zakres 0 - ‭65535‬. Nie wiem do końca jak przebiegnie rzutowanie np. wartości 65000 na int, którego zakres wynosi: ‭-32768‬ do ‭32767‬ (???). Na pewno nie otrzymasz 65000, bo jest to poza zakresem tego typu.<br /></div><br /><br />Z tym poradziłem sobie sprawdzaniem warunków aby liczba nie przekroczyła danego zakresu <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=8379">drewpol</a> — 17 lut 2016, o 09:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2016-02-16T22:59:50+01:00</updated>
<published>2016-02-16T22:59:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153874#p153874</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153874#p153874"/>
<title type="html"><![CDATA[Re: Rzutowanie typów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153874#p153874"><![CDATA[
Dlatego, że wynik danej operacji zapisywany jest z precyzją największego z argumentów. I tak - mnożąc dwie liczby int wynik będzie zapisany jako int i może on łatwo przekroczyć zakres tego typu i zostanie zapisany błędnie (pomniejszony o wartość maksymalną - dojdzie do przepełnienia i zapisany zostanie &quot;ogonek&quot;).<br /><br />Powiem szczerze, nie wiem jak zachowa się wynik, gdy funkcja pomiar(5) zwróci wartość ujemną i to  dużą - w granicach swojego zakresu, skoro kompilator ma 100 traktować jaku uint - bez znaku.<br /><br />Nie ważne, że potem dzielisz - pierwsze wykonywane jest mnożenie i ten wynik trzeba jakoś przechować.<br />Kolejna sprawa uint ma zakres 0 - ‭65535‬. Nie wiem do końca jak przebiegnie rzutowanie np. wartości 65000 na int, którego zakres wynosi: ‭-32768‬ do ‭32767‬ (???). Na pewno nie otrzymasz 65000, bo jest to poza zakresem tego typu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6195">APAP75</a> — 16 lut 2016, o 22:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2016-02-16T15:23:29+01:00</updated>
<published>2016-02-16T15:23:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153801#p153801</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153801#p153801"/>
<title type="html"><![CDATA[Re: Rzutowanie typów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153801#p153801"><![CDATA[
A dlaczego w obliczaniu wartości get_temp jest &quot;*100UL&quot;? Mnożysz przez liczbę typu unsigned long int. Jeżeli później zapisujesz to w zmiennej typu int, może wystarczy pomnożyć przez zmienną typu int?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 16 lut 2016, o 15:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-02-16T14:44:52+01:00</updated>
<published>2016-02-16T14:44:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153798#p153798</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153798#p153798"/>
<title type="html"><![CDATA[Re: Rzutowanie typów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153798#p153798"><![CDATA[
po pierwsze zamiast pisać int16_t łatwiej chyba pisać int <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale to taka tylko kosmetyczna uwaga<br /><br />czy trzeba rzutować w takim przypadku ? .... sprawa jest banalnie prosta <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... zdaj się na kompilator - jeśli on nie krzyczy żadnym warningiem, to znaczy że sam dokonał niejawnego rzutowania i wcale nie musisz się tym przejmować <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> (w większości wypadków)<br /><br />Zaś w twoim konkretnym przypadku - to nie wiem do końca po co chcesz robić takie sztuczki cyrkowe z rzutowaniem zamiast zmienić typ swojej zmiennej get_tem właśnie na int czyli zgodny z typem zwracanego rezultatu .... no sam powiedz ? po co sobie kładziesz że tak powiem kłody pod nogi ? czy nie lepiej tę funkcję napisać tak?<br /><br />[syntax=c]int16_t Get_Reference(void){<br />        int16_t get_temp;<br />        get_temp = (pomiar(5)*100UL)/243;<br />  return get_temp;<br />}[/syntax]<br /><br />i masz po zawodach <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bez żadnego rzutowania .... a jeszcze lepiej (akurat w przypadku konkretnie int16_t) tak:<br />[syntax=c]int Get_Reference(void){<br />        int get_temp;<br />        get_temp = (pomiar(5)*100UL)/243;<br />  return get_temp;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 lut 2016, o 14:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[drewpol]]></name></author>
<updated>2016-02-16T14:25:46+01:00</updated>
<published>2016-02-16T14:25:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153796#p153796</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153796#p153796"/>
<title type="html"><![CDATA[Rzutowanie typów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14547&amp;p=153796#p153796"><![CDATA[
Witajcie. Mam kilka pytań co do rzutowania.<br /><br />1. Posiadam funkcję, która zwraca mi wartość int16_t, natomiast zmienna, którą zwraca jest typu uint16_t, czy przy zwracaniu powinno się wykonać rzutowanie typu ?<br />Funkcja wygląda tak:<br />[syntax=c]int16_t Get_Reference(void){<br />uint16_t get_temp;<br />get_temp = (pomiar(5)*100UL)/243;<br />  return get_temp;<br />}[/syntax]<br />Czy powinno być tak:<br />[syntax=c]return (int16_t)get_temp;[/syntax]<br />Jaka jest w sumie różnica przy zmianie takiego typu ?<br /><br />2. Pewna funkcja zwraca mi wartość w postaci :<br />[syntax=c]return ((int16_t)ret);[/syntax]<br />W jaki sposób mogę ją zamienić na zmienną typu uint16_t z zakresu 0-1023 ? Chodzi mi o sposób przeliczenia tych wartości. Czy w tym przypadku przy konwersji typów zostanie ucięta część ujemna liczby (int16_t)ret ? Tzn jeżeli będę miał np ret=-100 to po konwersji wyświetli 0 ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8379">drewpol</a> — 16 lut 2016, o 14:25</p><hr />
]]></content>
</entry>
</feed>