přetečení int v C arduino

Pavel Kutina hw na prelude.cz
Pátek Červenec 18 09:31:36 CEST 2014


Jasne, otazka je, kam se ukladaji mezivysledky a jak se dela 
optimalizace kodu. Priznam se, ze v tom taky plavu, ale mozna bych si 
dovedl predstavit postup, kdy se interne pracuje s promennou v int, 
takze komplikator ocekava vysledek take v int. Co to udela, kdyz i z den 
udelate long? Jiste, je to mrhani prostredky, ale vysledek by mne zajimal.

Predpokladam, ze to tu nekdo (kolega wek?) vysvetli, docela by mne to 
take zajimalo.

Pavel Kutina



Dne 18.7.2014 9:03, Petr Zapadlo napsal(a):
> Zdravím,
>
> cas1 je ulong - tj na arudinu očekávám 32bit.
> Tam je rezerva dost velká.
> Záleží jak se přesně počítá,
> cas1 je ulong, den je int. Tedy člen den*86400 bude do intu velký, ale
> do ulong vyhovující.
>
> Jak dochází k přetypování?
>
> Petr
>
>
> Dne 18.7.2014 08:28, Pavel Kutina napsal(a):
>>
>> Skoly nemam, ale at na to koukam, jak chci, tak mi vychazi, ze v radku
>> cas1=cas1-den*86400;
>> bude "den" vzdycky mimo rozsah int i uint (tedy za predpokladu, ze den
>> je vetsi nez jedna, coz tak nejak obvykle byva). Pritlacil bych na long.
>>
>> Pavel Kutina
>>
>>
>> Dne 18.7.2014 8:02, Petr Zapadlo napsal(a):
>>> Bude,
>>> to jsem pochopil, proto jsem taky změnil  délku datového typu.
>>> tady mě ram netrápí, ale chci chápat co se děje do budoucna.
>>>
>>> Zakopaný pes je zřejmně zde:
>>>
>>> cas1=cas1-den*86400;            //cas1=36000
>>> hodina=int(cas1/3600);            //hodina=10, cas1=65535
>>>    cas1=cas1-hodina*3600;
>>>
>>> v které přesně operaci to přeteče a proč?
>>> cas1 unsigned log, takže rezerva je tam dost velká.
>>> Zápis:
>>> int(cas1/3600)
>>>
>>> chápu tak, že výpočet se provede v ulong a převede se na int.
>>>
>>> Je  to tak?
>>>
>>> Díky
>>>
>>> Petr
>>>
>>>
>>>
>>>
>>> Dne 18.7.2014 07:56, Robert Baranka napsal(a):
>>>> nebude to "neco" mat suvislost s 2^15, teda -32768 az 32767?
>>>> :-D
>>>> Robo
>>>>
>>>> Dňa 18. 7. 2014 7:37 Petr Simek  wrote / napísal(a):
>>>>>
>>>>> Int je signed tedy +-32000 a neco. Co zkusit uint ?
>>>>>
>>>>>> Petr
>>>>>
>>>>> *------------------------------------------------------------------------*
>>>>>
>>>>>
>>>>> |                          Petr Simek   APS
>>>>> JU                           |
>>>>> | psimek na jcu.cz                              |
>>>>> *------------------------------------------------------------------------*
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> HW-list mailing list  -  sponsored by www.HW.cz
>>>>> Hw-list na list.hw.cz
>>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>>>
>>>> _______________________________________________
>>>> HW-list mailing list  -  sponsored by www.HW.cz
>>>> Hw-list na list.hw.cz
>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>


Další informace o konferenci Hw-list