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