suoma 发表于 2015-5-17 16:09:20

这两句程序有区别吗?

char in=(char)Serial.read();
inputString+=in;

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

ken0137 发表于 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, 這時就不需要任何轉換而直接連上去了.

suoma 发表于 2015-5-18 11:56:00

ken0137 发表于 2015-5-17 20:21 static/image/common/back.gif
“Super169 ”的精彩回答
http://www.geek-workshop.com/thread-14981-1-1.html



               谢谢回复
页: [1]
查看完整版本: 这两句程序有区别吗?