(一)数据类型扩充
(1)表示范围小的整型变量赋值给表示范围大的整型变量
规则:
- 无符号整数,直接在补码前面补0。(unsigned)
- 有符号整数,扩充符号位。(signed)
- 与左值的有无符号无关(例:
short x = a; 与x是否有符号无关
)(只在原来补码的基础上进行补充,与目标变量的(有无符号)无关)
从这张图我们可以看出,其一,数据存储的都是补码;其二,都是在补码的基础上进行补充(0或1)
(二)数据的截断
(1)将数据类型较大的变量赋给数据类型较小的变量
- 规则:无论有无符号,丢弃
高位
数据
这让我们很清晰的理解了该规则——无论有无符号,只取低位数据
(三)算术类型转换和赋值类型转换
- 自动类型转换:隐式类型转换:发生在小类型(低精度)转大类型(高精度)(编译器可以自动完成,就像上述规则一样)
- 强制类型转换:显示类型转换:发生在大类型转小类型或不同类型转换(需要认为的操作)