我有这个简单的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
为什么我收到此计算错误?我该如何解决?提前谢谢
答案 0 :(得分:2)
你有一个整数溢出。 Arduino上的int是16位,这意味着它的范围是-32,768到32,767。
https://www.arduino.cc/reference/en/language/variables/data-types/int/
答案 1 :(得分:1)
这是一个溢出错误。尝试使用long long
或更大范围的内容。 Arduino int
相当于short
,因此我建议您使用long
或long long
。正如Bennji所说,范围从-32768到32767,与普通c ++编译器的short
相同。
你也可以先划分然后再乘。