数据类型转换(c语言)

** 在c语言中进行混合运算时,不同的类型需要先转换成同一类型,然后才进行运算。如表达式,10+10.3+‘a’。在c语言中,类型转换的方法由两种,一种是自动类型转换,另一种是强制类型转换。**

1.自动类型转换

自动类型转换在不同类型数据类型的量混合运算时,由编译系统系动完成。
自动类型转换遵循以下规则。
(1)若参与运算的类型不同时,先转换成同一的类型,然后进行运算。
(2)转换按数据长度增加的方向进行,以保障精度不降低。如int型和long型或unsigned型运算时,先把int型转换成long或unsigned型后再进行运算;int型和char型运算时,先把char转换成int型后再进行运算,如下图所示:
数据类型转换(c语言)
(3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换为double型,再作运算。
(4)插入型和short型参与运算时,必须先转换为int型。
(5)再赋值运算中,赋值号的两边量的数据类型不同时,赋值号右边量的类型转换为左边量的类型。当右边量的类型长度比左边的长时,将会丢失一部分数据,可能导致数值改变或降低。

2强制类型转换

强制类型转换来实现,可利用强制类型转换一个表达式的值转换为所需要的类型。一般的形式:
(类型标识符)(表达式)如:(int)(a/5);
(double)c;//将变量c强制转换伟double型;
(int)c/f;//将c的类型强制转换伟int型,然后再除f;
(float)(ab)/5;//将ab的而结果强制转换伟float型,然后再除5;
强制类型转换时,注意几点:
(1)类型的标识符和表达式必须加括号(单个变量不加括号)
(int)(x/y)和(int)x/y是不同的。
(2)在强制类型转换后,原变量的类型不会改变,只是表达式的运算结果的类型临时改变
int a ;double b;
b=(double)(a/4);
a的类型没有改变,还是int类型。