整数类型有以下几种:short [int]、unsigned short [int]、int、unsigned [int] ([]内可省略)
这四种整数类型的特征有两种:位数长短和有无符号。
转换大体可以分为位扩展和位截取,我们主要说的是位扩展。
一、位扩展
而在实际编程中遇到的类型转换有三种:
1、有无符号的转换(位数相同)
位级表示不变,只是解释方法发生了变化。
2、位数的扩展(符号类型相同)
有符号数扩展时填充的是符号位,无符号数扩展时填充的是零。
3、符号的转换和位数的扩展二者都有
当二者同时存在时,位数扩展的优先级高于符号的转换。所以先进行位扩展(有符号数扩展符号位,无符号数扩展零),然后进行符号转换。
例:
short sx = -12345; //-12345
unsigned short usx = sx; // 53191
int x = sx; //-12345
unsigned int ux = sx; //4294954951
二、位截取
位截取直接将原数据截取相应的字长,然后按照相应的方法进行