C语言数据类型转换.ppt
C语言数据类型转换 C语言数据类型转换是指在不同数据类型的量混合运算时,由编译系统自动完成的类型转换过程。以下是C语言数据类型转换的详细知识点: 1. 数据类型转换发生在不同数据类型的量混合运算时,由编译系统自动完成。 2. 转换按数据长度增加的方向进行,以保证精度不降低。 3. 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。 4.1 浮点型与整型转换: • 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分,只保留整数部分。 • 将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式,即小数点后带若干个0。 5.2 单、双精度浮点型转换: • 由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为double型数据参加运算,然后直接赋值。 • double 型数据转换为float 型时,通过截尾数来实现,截断前要进行四舍五入操作。 6.3 char型与int 型转换: • int型数值赋给char型变量时,只保留其最低8位,高位部分舍弃。 • char型数值赋给int型变量时,一些编译程序不管其值大小都作正数处理,而另一些编译程序在转换时,若char型数据值大于127,就作为负数处理。 7.4 int型与long 型转换: • long型数据赋给int型变量时,将低16位值送给int型变量,而将高16位截断舍弃。 • 将int型数据送给long型变量时,其外部值保持不变,而内部形式有所改变。 8.5 无符号整数转换: • 将一个unsigned 型数据赋给一个占据同样长度存储单元的整型变量时(如:unsigned→int、unsigned long→long,unsigned short→short),原值照赋,内部的存储方式不变,但外部值却可能改变。 • 将一个非unsigned整型数据赋给长度相同的unsigned型变量时,内部存储形式不变,但外部表示时总是无符号的。 9. 强制类型转换运算符可以将一个表达式转换成所需类型,例如:(double)a、(int)(x+y)、(float)(5%3)等。 10. 在从高到低的强制转换中,实质上就是一个截断的操作,只把低端需要的部分保留,其余的部分直接扔掉了。