přetečení int v C arduino
Pavel Kutina
hw na prelude.cz
Pátek Červenec 18 08:28:08 CEST 2014
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
>
Další informace o konferenci Hw-list