看板 java 關於我們 聯絡資訊
※ 引述《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