当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实质内容, 而较高类型的数据转换为较低类型时则可能有些数据丢失。
要注意的时在c语言中两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。
具体转换细节
- 浮点型与整型
将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分,只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式,即小数点后带若干个0。 - 单、双精度浮点型
由于c语言中的浮点值总是用双精度表示的,所以float型数据只是在尾部加0延长为doub1e型数据参加运算,然后直接赋值。doub1e型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。 - char型与int型
int型数值赋给char型变量时,只保留其最低8位,高位部分舍弃。char型数值赋给int型变量时,则转换后也仍然保持原值,只是数据的内部表示形式有所不同。 - 无符号整数与有符号整数
将一个unsigned型数据赋给一个占据同样长度存储单元的整型变量时(如:unsigned→int、unsigned long→long,unsigned short→short)或者相反时,原值照赋,内部的存储方式不变,但外部值却可能改变,