【发布时间】:2019-10-16 02:24:58
【问题描述】:
我有一个看起来很简单的问题,但我认为 Processing 中有些东西我不明白。问题是当我将两个整数相加并且最终数量> 32k时,数量变为负数。
看起来像一个溢出问题,除了处理引用状态
整数的数据类型,没有小数点的数字。整数可以大到 2,147,483,647,小到 -2,147,483,648。
这是有问题的代码和串行监视器输出:
int start_millis = millis();
int end_millis = start_millis + 5000;
Serial.println(start_millis);
Serial.println("");
Serial.println(end_millis);
还有监视器输出:
!---Motion Detected; Flicker starting ---!
17616
22616
!--- Flicker Over ---!
!---Motion Detected; Flicker starting ---!
22986
27986
!--- Flicker Over ---!
!---Motion Detected; Flicker starting ---!
29569
-30967
【问题讨论】:
-
张贴,你会收到的。来自 Arduino 文档:在 Arduino Uno(和其他基于 ATmega 的板)上,一个 int 存储一个 16 位(2 字节)值。这会产生 -32,768 到 32,767 的范围(最小值为 -2^15,最大值为 (2^15) - 1)。
标签: c++ arduino integer processing overflow