Re: [請益]關於型別轉換

看板java作者 (小美)時間17年前 (2008/12/03 04:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《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
文章代碼(AID): #19DPu4Xl (java)
文章代碼(AID): #19DPu4Xl (java)