文本内容:
语言数据类型转换C数据类型转换就是将数据变量、表达式的结果从一种类型转换到另一种类型例如,为了保存小数你可以将int类型的变量转换为double类型数据类型转换的一般格式为typename expressiontype_name为要转换到的数据类型,expression为表达式例如
1.float a;〃把a转换为实型
2.int x+y;〃把x+y的结果转换为整型
3.float100;〃将一个常量转换为实型【示例】将整数转换为浮点数
1.ttinclude stdio.h
2.int main{
3.int sum=17,count=5;
4.double mean;
5.mean二double sum/count;
6.printf Z/Valueof mean:mean;
7.0;return
8.运行结果Value ofmean:
3.400000需要注意的是,类型转换运算符的优先级高于/,double sum/count会先将sum转换为double类型,然后再进行除法运算如果写作double sum/count,那么运行结果就是
3.000000o这种由程序员显式进行的转换称为强制类型转换除了强制类型转换,在不同数据类型的混合运算中编译器也会隐式地进行数据类型转换,称为自动类型转换自动类型转换遵循下面的规则
1.若参与运算的数据类型不同,则先转换成同一类型,然后进行运算
2.转换按数据长度增加的方向进行,以保证精度不降低例如int型和long型运算时,先把int量转成long型后再进行运算
3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算
4.char型和short型参与运算时,必须先转换成int型
5.在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度F图表示了类型自动转换的规则【示例】自动数据类型转换
1.#includestdio.h
2.int main{
3.float PI=
3.14159;
4.int si,r=5;
5.double s2;
6.si=r*r*PI;
7.s2=r*r*PI;
8.printf/zsl=%d,s2=%f\n〃,si,s2;
9.return0;
10.}运行结果sl=78,s2=
78.539753在计算表达式r*r*PI时,r和PI都转换成double类型,表达式的结果也为double类型但由于si为整型,所以赋值运算的结果仍为整型,舍去了小数部分注意是将小数部分直接丢掉,而不是按照四舍五入向前舍入无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型请看下面的例子纯文本复制
1.#includestdio.h
2.int main{
3.float f=
5.75;
4.printf/z intf=%d,f=%f\n/z,intf,f;
5.0;return
6.运行结果:intf=5f=
5.750000z。