一、短数据类型扩展为长数据类型
1、要扩展的短数据类型为有符号数的
如1:char x=10001001b;
2、要扩展的短数据类型为无符号数的
如1:unsigned char x=10001001b;
二、长数据类型缩减为短数据类型
三、同一长度的数据类型中有符号数与无符号数的相互转化
附:有符号数的转换
从 |
到 |
方法 |
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 |
使用双精度浮点数表示。可能丢失精度。 |
无符号数的转换
从 |
到 |
方法 |
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 |