极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11297|回复: 2

这两句程序有区别吗?

[复制链接]
发表于 2015-5-17 16:09:20 | 显示全部楼层 |阅读模式
char in=(char)Serial.read();
inputString+=in;

char in=Serial.read();
inString+=(char)in;
有区别吗?
回复

使用道具 举报

发表于 2015-5-17 20:21:39 | 显示全部楼层
“Super169 ”的精彩回答
http://www.geek-workshop.com/thread-14981-1-1.html



String class 的特性, 當 operator "+" 之後是 numeric type, 會自動把數值先轉成 字符再加上去.
"1" 的數值就是 49, 由於 Serial.read() 的結果是 int type, 當你用 comdata += Serial.read() 時, comdata 是 String, Serial.read() 是 int, 就會執行 String "+" int 的 operation.  當你輸入第一個字 "1" 時, 就會先把 "1" (int value 為 ASCII 值, 即 49) 轉成 "49", 然後再連接上去.  之後都是一樣了.

當你加上 (char) 的轉換後, comdata += (char)Serial.read(), 就變成是 String "+" char 的 operation, 這時就不需要任何轉換而直接連上去了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-18 11:56:00 | 显示全部楼层
ken0137 发表于 2015-5-17 20:21
“Super169 ”的精彩回答
http://www.geek-workshop.com/thread-14981-1-1.html

                 谢谢回复
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 02:09 , Processed in 0.038037 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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