极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11746|回复: 6

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

[复制链接]
发表于 2014-4-28 15:38:02 | 显示全部楼层 |阅读模式
unsigned long LimitTimeTemp = 0;

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

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


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

使用道具 举报

 楼主| 发表于 2014-4-28 16:00:34 | 显示全部楼层
怎么没有人知道吗?
回复 支持 反对

使用道具 举报

发表于 2014-4-28 18:20:32 | 显示全部楼层
直接打印   
回复 支持 反对

使用道具 举报

发表于 2014-4-28 18:33:04 | 显示全部楼层
50 同 700 by default 會當成係 integer, 結果大於 32767 會 overflow.
如果要結果大於 32767, 要先 cast 成 unsigned long 去計算,

LimitTimeTemp = (unsigned long) 50 * 700;

回复 支持 反对

使用道具 举报

 楼主| 发表于 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
50 同 700 by default 會當成係 integer, 結果大於 32767 會 overflow.
如果要結果大於 32767, 要先 cast  ...

{:3_52:}{:3_52:}{:3_52:}{:3_52:}
回复 支持 反对

使用道具 举报

发表于 2014-4-30 21:32:29 | 显示全部楼层
学习了,,,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 03:09 , Processed in 0.036930 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表