NodeMCU Lua 整数最大值为 2^31

NodeMCU Lua integer max value is 2^31

Lua SDK 3.0.1-dev(fce080e) 上的 5.1.4 尝试使用 node.dsleepMax() 并返回一个非常小的数字 (147324921)。然后我尝试手动将 node.dsleep 中的睡眠时间设置为 32 位最大值 (4294967295),它只保持睡眠大约 30 分钟左右。

尝试了以下方法:

    sleeptime = 4294967295
    > 
    =print(sleeptime)

2147483647

也就是 2^31 -1。

还做了一个循环加一个变量,到2^31就变成负数了

问题:

  1. 为什么变量在 2^31 处回绕?
  2. node.dsleep SDK 2.1 及更高版本不应该接受 64 位值吗?

此致,

塞萨尔

您已经收到了一些关于整数与浮点数的反馈。至于 dsleep the documentation doesn't explicitly state that it accepts 64bit values but that's indeed what's happening as per https://github.com/nodemcu/nodemcu-firmware/pull/2358(自 2018 年 4 月起)。