《数据类型转换.pdf》由会员分享,可在线阅读,更多相关《数据类型转换.pdf(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、数据类型转换 程序设计基础课程组 1、数据类型转换 概念:将数据(变量、表达式的结果)从一种类型转换到另一种类型。 产生原因:表达式处理、计算过程中,可能产生数据类型的兼容处理。 类型:强制类型转换和自动类型转换。 1.1 强制数据类型转换 发起者:程序员。根据需要人为设计。 应用场景:当表达式中各操作数的类型不同,程序员根据需要 将操作数或操作结果转化为所预定的类型。 转换格式: (目标类型说明符)(转换表达式) 1.1 强制数据类型转换 【用例1】将整型转换为浮点型 #include int main() int x = 17, y = 5; double z,z0; z = (doubl
2、e)x/y; z0 = (double)(x/y); printf(Value of : %f,%fn, z,z0); returnreturn 0; 运行结果: Value of : 3.400000,3.000000 分析及注意点: 1、类型说明符和转换表达式都必须 加括号(单个变量可以不加括号)。 注意:本例中(double)x/y与 (double)(x/y)转换对象的区别。 2、类型转换运算符( )的优先级高于 表达式中其他运算符。如本例中类型 转换运算符( )的优先级高于/。 1.2 自动类型转换 发起者:C编译系统。属系统自动处理。 产生原因:当源数据类型与目标类型不同,发生数据
3、的 兼容性处理时,由编译系统进行类型的转换。 1.2 自动类型转换 1、算数运算符表达式中的转换:由低级向高级转换机制。(按箭头方向) 1.2 自动类型转换 2、 赋值运算中的转换:赋值号两边的数据类型不同时,需要把右边表达式 的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长 时,将丢失一部分数据,这样会降低精度。 1.2 自动类型转换 【用例2】求圆的面积中自动类型转换 #include int main() float PI=3.14159; int r=5; /半径 int s1; double s2; /s1,s2用来接收面积值 s1 = r*r*PI; s2 = r*r*PI; printf(s1=%d, s2=%fn, s1, s2); return return 0; 运行结果:s1=78, s2=78.539753 解释: 1、表达式r*r*PI的计算及对s1,s2的最终 赋值,都体现了自动转换; 2、首先计算表达式时,r 和 PI 都转换成 double类型,表达式的结果也为double类 型。赋值时,需转换为“=”号左边的类 型,由于 s1定义为整型,所以赋值运算的 结果也要转换为整型,从而必须舍去小数 部分。(注:直接舍弃,不是四舍五入) 本节内容到此结束 谢谢观看