ARDUINO NANO 两个数字相乘出错,是为什么?
unsigned long LimitTimeTemp = 0;void setup() {
Serial.begin(9600);
}
void loop() {
LimitTimeTemp = 50 * 700;
Serial.println(" = " + (String)LimitTimeTemp);
}
结果算出来的答案是 4294936760, 不知道是为什么。请大家帮忙。 怎么没有人知道吗? 直接打印 50 同 700 by default 會當成係 integer, 結果大於 32767 會 overflow.
如果要結果大於 32767, 要先 cast 成 unsigned long 去計算,
LimitTimeTemp = (unsigned long) 50 * 700;
Super169 发表于 2014-4-28 18:33
50 同 700 by default 會當成係 integer, 結果大於 32767 會 overflow.
如果要結果大於 32767, 要先 cast...
好的,我去试试,谢谢了。 Super169 发表于 2014-4-28 18:33 static/image/common/back.gif
50 同 700 by default 會當成係 integer, 結果大於 32767 會 overflow.
如果要結果大於 32767, 要先 cast...
{:3_52:}{:3_52:}{:3_52:}{:3_52:} 学习了,,,:funk:
页:
[1]