Arduino计算错误 - 不应该时给出负值

Arduino computing error - giving negative values when it shouldn't

本文关键字:不应该 计算 错误 Arduino      更新时间:2023-10-16

我有一个简单的arduino代码:

#define percentage 60
void setup() {
  Serial.begin(9600);
  int seconds = 682;
  Serial.println(seconds);
  Serial.println((seconds * percentage));//Should be 40920
  Serial.println((seconds * percentage) / 100); //Should be 409
}
void loop() {}

当我运行它并打开串行显示器时,它显示了:

682

-24616

-246

,但应该显示以下:

682

40920

409

为什么我会遇到此计算错误?我该如何解决?预先感谢

您有一个整数溢出。Arduino上的int是16位,这意味着它的范围为-32,768至32,767。

https://www.arduino.cc/reference/en/language/variables/data-types/int/

这是一个溢出错误。尝试使用long long或更大范围的其他内容。Arduino int等于short,因此我建议使用longlong long。正如Bennji正确说的那样,该范围从-32768到32767,适用于正常C 编译器的A short

也可以先分开然后乘。