Re: [請益]關於型別轉換
※ 引述《vic1225 (/* I'm not worth */)》之銘言:
: 在java中
: byte a, b, c;
: a = b + c;
: b , c 會被先轉成int然後相加
: 然後何在轉成byte指定給a
: 這應該是表示 int 的範圍比byte小吧
: 還是??
: byte -> int in java
: 相當於
: double -> int 還是 int -> double in C 呢
: 感激不盡~!
不知道有沒有搞錯你的問題
但 a = b + c; 這個指令編譯不會過
原因你自己已經說了
運算時JAVA會自動把小於int的形態轉成int才作運算
所以b + c視為二個int在作運算
當然運算結果視為int
而把int放到a是不正確的
因為a是byte形態,比int還小
JAVA中把小東西放到大空間會作自動轉型
但大東西要放到小空間則必須作強制轉型
所以正確的寫法應該是
a = (byte)(b + c);
但必須考慮運算結果轉型後的精確度問題
另外給個有趣的例子
byte a=3;
a = a + 1; (同樣是錯的,原因同上)
正確的寫法
a = (byte) (a + 1);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 24.17.240.114
討論串 (同標題文章)