přetečení int v C arduino
Jaroslav Lukesh
lukesh na seznam.cz
Pátek Červenec 18 09:53:32 CEST 2014
Arduino se neprogramuje v Céčku, ale v uměleckém jazyku Wire, který je
zjednodušeným céčkem.
http://arduino.cc/en/Reference/HomePage
viz odstavec Data Types, mrkněte taky na typ byte
Zajímalo by mně, jak je máte udělané celé, hoďte to sem celé, za odměnu sem
hodím svého knightridera.
A až se budete někdy příště divit proč třeba mikrosekundy občas
neposlouchají, tak si přečtětě, jaký je jejich reliable rozsah.
A zkuste si do něj přidat doplněk ArduBlock, co tomu řeknou děti.
----- Původní zpráva -----
Od: "Petr Zapadlo" <zapik na email.cz>
nejsem úplně zběhlý v Céčku, tak mě občas něco překvapí.
Mám následující funkci:
void zobraz(unsigned long cas1) {
int den,hodina,minuta,vterina;
den=int(cas1/86400); //den=0, cas1=36000
cas1=cas1-den*86400; //den=0, cas1=36000
hodina=int(cas1/3600); //hodina=10, cas1=65535
cas1=cas1-hodina*3600; //hodina=10, cas1=65535
minuta=int(cas1/60); //minuta=1092,
cas1=cas1-minuta*60;
vterina=int(cas1);
}
A když proměnná cas1 má hodnotu přes 36000, tak dojde někde přetečení a
v minutách se objeví hodnota přes 1092. Do komentářů jsem připsal hodnoty.
Při změně proměných na long se to začalo chovat korektně.
V čem je problém, co jsem nepochopil?
Další informace o konferenci Hw-list