2-4有符号数的转换 从 到 方法 char short 符号位扩展 char long 符号位扩展 char unsigned char 最高位失去符号位意义,变为数据位 char unsigned short 符号位扩展到short;然后从short转到 unsigned short char unsigned long 符号位扩展到long; 然后从long 转到unsigned long char float 符号位扩展到long; 然后从long 转到float char double 符号位扩展到long; 然后从long 转到double char long double 符号位扩展到long; 然后从long 转到long double short char 保留低位字节 short long 符号位扩展 short unsigned char 保留低位字节 short unsigned short 最高位失去符号位意义,变为数据位 short unsigned long 符号位扩展到long; 然后从long转到unsigned double short float 符号位扩展到long; 然后从long 转到float short double 符号位扩展到long; 然后从long 转到double short long double 符号位扩展到long; 然后从long 转到double long char 保留低位字节 long short 保留低位字节 long unsigned char 保留低位字节 long unsigned short 保留低位字节 long unsigned long 最高位失去符号位意义,变为数据位 long Float 使用单精度浮点数表示。可能丢失精度。 long double 使用双精度浮点数表示。可能丢失精度。 long long double 使用双精度浮点数表示。可能丢失精度。 2-5无符号数的转换 从 到 方法 unsigned char char 最高位作为符号位 unsigned char short 0扩展 unsigned char long 0扩展 unsigned char unsigned short 0扩展 unsigned char unsigned long 0扩展 unsigned char float 转换到long; 再从 long 转换到float unsigned char double 转换到long; 再从 long 转换到double unsigned char long double 转换到long; 再从 long 转换到double unsigned short char 保留低位字节 unsigned short short 最高位作为符号位 unsigned short long 0扩展 unsigned short unsigned char 保留低位字节 unsigned short unsigned long 0扩展 unsigned short float 转换到long; 再从 long 转换到float unsigned short double 转换到long; 再从 long 转换到double unsigned short long double 转换到long; 再从 long 转换到double unsigned long char 保留低位字节 unsigned long short 保留低位字节 unsigned long long 最高位作为符号位 unsigned long unsigned char 保留低位字节 unsigned long unsigned short 保留低位字节 unsigned long float 转换到long; 再从 long 转换到float unsigned long double Convert directly to double unsigned long long double 转换到long; 再从 long 转换到double