Pages: [1]   Go Down
Author Topic: este Long no me hace caso  (Read 393 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 38
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi problema es que las variables long que declaro no toman los valores que deberían, y están a varios años luces de llenarse:

esto:
  unsigned long sal = 24*3600;
  Serial.println(sal);

me devuelve:       20.864
y deveria devolver 86.400

y esto:
  unsigned long sal = 12*30*24*3600;
  Serial.println(sal);

me devuelve:   42.949.41.696
y deveria devolver 31.104.000

Como se ve lo que debería de darme esta muy lejos del limite de la variable :  4,294,967,295
Seguramente sea una tonteria la solución aunque no la encuentro smiley-sad
Logged

Palencia, Spain
Offline Offline
Sr. Member
****
Karma: 25
Posts: 476
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola. Intuyo que te está truncando a int tu long, yaque si restas el valor obtenido del deseado obtenemos 65536 (10000H).
No estoy seguro si el truncado se produce en la operación previa al almacenado en tu variable o es serial quien lo trunca, aunque me inclino por lo primero.
Prueba a almacenar los operandos en variables long y usar éstas a ver.
Si funciona, puedes probar tu código original haciendo cast al cálculo.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 38
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muchas gracias noter, ha funcionado, guardando los valores en variables long:

Code:
  long meses = 12;
  long dias = 30;
  long horas = 24;
  long segundos = 3600;
  unsigned long sal = meses*dias*horas*segundos;

Logged

Pages: [1]   Go Up
Jump to: