lua - NodeMCU Lua 整数最大值为 2^31
问题描述
SDK 3.0.1-dev(fce080e) 上的 Lua 5.1.4 尝试使用 node.dsleepMax() 并返回一个非常小的数字 (147324921)。然后我尝试手动将 node.dsleep 中的睡眠时间设置为 32 位最大值(4294967295),它只保持睡眠大约 30 分钟左右。
尝试了以下方法:
sleeptime = 4294967295
>
=print(sleeptime)
2147483647
这是 2^31 -1。
还做了一个循环添加到一个变量,当它达到 2^31 时它变成负数。
问题:
- 为什么变量在 2^31 处换行?
- node.dsleep 不应该接受 SDK 2.1 及更高版本的 64 位值吗?
问候,
塞萨尔
解决方案
您已经得到了一些关于 int 与 float 的反馈。至于dsleep
文档没有明确声明它接受 64 位值,但这确实是按照https://github.com/nodemcu/nodemcu-firmware/pull/2358(自 2018 年 4 月以来)发生的情况。