【发布时间】:2023-02-13 04:15:16
【问题描述】:
我正在使用 Arduino 开发 ESP32,由于某种原因打印的值不同,原因是什么?
auto reset_time = 24L * 60 * 60 * 1000 * 1000; //86400000000
Serial.print("Reset Timer in: ");
Serial.println(reset_time);
Serial.print((reset_time / 1000));
Serial.println(" ms");
Serial.print((reset_time / 1000 / 1000));
Serial.println(" s");
Serial.print((reset_time / 1000 / 1000 / 60));
Serial.println(" m");
Serial.print((reset_time / 1000 / 1000 / 60 / 60));
Serial.println(" h");
这会产生以下输出:
21:05:58.310 -> Reset Timer in: 500654080
21:05:58.310 -> 500654 ms
21:05:58.310 -> 500 s
21:05:58.310 -> 8 m
21:05:58.310 -> 0 h
【问题讨论】:
-
请注意
500654080 == 86400000000 % 2**32您正在查看 32 位溢出。 -
尝试使用
24LL。