NodeMCU Lua整数最大值是2^31

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

尝试了以下内容:

    sleeptime = 4294967295
    >
    =print(sleeptime)

2147483647

即为2^31 -1。

还进行了循环并添加到变量中,当它达到2^31时,它变成了负数。

问题:

1.为什么变量在2^31处包装? 2.不是node.dsleep应该使用SDK 2.1及以上的64位值吗?

敬礼,

塞萨尔

点赞
用户131929
用户131929

你已经得到了一些关于 intfloat 的反馈。至于 dsleep文档并没有明确说明它接受 64 位的值,但是根据https://github.com/nodemcu/nodemcu-firmware/pull/2358(自 2018 年 4 月以来),实际上是这样的。

2020-08-20 06:47:03