demo0 发表于 2014-4-28 15:38:02

ARDUINO NANO 两个数字相乘出错,是为什么?

unsigned long LimitTimeTemp = 0;

void setup() {
Serial.begin(9600);
}

void loop() {
   LimitTimeTemp = 50 * 700;
   Serial.println(" = " + (String)LimitTimeTemp);
}


结果算出来的答案是 4294936760, 不知道是为什么。请大家帮忙。

demo0 发表于 2014-4-28 16:00:34

怎么没有人知道吗?

davidce 发表于 2014-4-28 18:20:32

直接打印   

Super169 发表于 2014-4-28 18:33:04

50 同 700 by default 會當成係 integer, 結果大於 32767 會 overflow.
如果要結果大於 32767, 要先 cast 成 unsigned long 去計算,

LimitTimeTemp = (unsigned long) 50 * 700;

demo0 发表于 2014-4-28 18:51:14

Super169 发表于 2014-4-28 18:33
50 同 700 by default 會當成係 integer, 結果大於 32767 會 overflow.
如果要結果大於 32767, 要先 cast...

好的,我去试试,谢谢了。

智能创客 发表于 2014-4-29 09:52:41

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:}

张竞 发表于 2014-4-30 21:32:29

学习了,,,:funk:
页: [1]
查看完整版本: ARDUINO NANO 两个数字相乘出错,是为什么?