java,当我将int转换为short时,int的哪一部分将丢失。
例如,当int i = 32768时,当我将i转换为short时,哪个部分将丢失
与java一样,int有32位,short只有16位,当int转换为short时,高16位是丢失还是低16位?
答案 0 :(得分:0)
短值限制为-32768到+32767,而Java在转换为短(a narrowing primitive conversion, JLS 5.1.3)时仅保留最低16位。
高16位将丢失
例5.1.3-2。缩小丢失信息的原始转换
class Test {
public static void main(String[] args) {
// A narrowing of int to short loses high bits:
System.out.println("(short)0x12345678==0x" +
Integer.toHexString((short)0x12345678));
// An int value too big for byte changes sign and magnitude:
System.out.println("(byte)255==" + (byte)255);
// A float value too big to fit gives largest int value:
System.out.println("(int)1e20f==" + (int)1e20f);
// A NaN converted to int yields zero:
System.out.println("(int)NaN==" + (int)Float.NaN);
// A double value too large for float yields infinity:
System.out.println("(float)-1e100==" + (float)-1e100);
// A double value too small for float underflows to zero:
System.out.println("(float)1e-50==" + (float)1e-50);
}
}