ค่าสูงสุด NodeMCU Lua จำนวนเต็มคือ 2 ^ 31
Aug 19 2020
Lua 5.1.4 บน SDK 3.0.1-dev (fce080e) พยายามใช้ node.dsleepMax () และส่งคืนจำนวนที่น้อยกว่ามาก (147324921) จากนั้นฉันพยายามตั้งเวลาสลีปด้วยตนเองใน node.dsleep เป็นค่าสูงสุด 32 บิต (4294967295) และยังคงอยู่ในโหมดสลีปประมาณ 30 นาทีเท่านั้น
พยายามดังต่อไปนี้:
sleeptime = 4294967295
>
=print(sleeptime)
2147483647
ซึ่งก็คือ 2 ^ 31 -1
ยังเพิ่มการวนซ้ำในตัวแปรและจะกลายเป็นลบเมื่อถึง 2 ^ 31
คำถาม:
- เหตุใดการตัดตัวแปรจึงอยู่ที่ 2 ^ 31
- node.dsleep ไม่ควรยอมรับค่า 64 บิตที่มี SDK 2.1 ขึ้นไปใช่หรือไม่
ความนับถือ,
ซีซาร์
คำตอบ
MarcelStör Aug 20 2020 at 06:47
คุณได้รับคำติชมเกี่ยวกับ int กับ float แล้ว สำหรับdsleep
เอกสารไม่ได้ระบุอย่างชัดเจนว่ายอมรับค่า 64 บิต แต่นั่นคือสิ่งที่เกิดขึ้นตามhttps://github.com/nodemcu/nodemcu-firmware/pull/2358 (ตั้งแต่เมษายน 2018)