C语言的数据类型转换
C语言中有,整型数据类型,short、int、long、long long;浮点数据类型,float、double;字符型数据类型,char。事实上,char也是一种整型数据类型,只是取值范围用来装ASCII内的字符与数值映射刚刚好。关键取决于,你用整型的方式%d,还是用字符的方式%c,使用和解释它。另外,还包括上面所有数据类型的无符号版本,加上前缀unsigned。
1)自动类型转换:
在进行程序运算时,如果遇到不同的数据类型,编译器会将参与运算的所有数据先转换为同一种类型,然后再进行计算,这是自动类型转换。转换规则:
· 转换按数据长度增加的方向进行,以保证数值不失真,或者精度不降低。例如,int 和 long 参与运算时,先把 int 类型的数据转成 long 类型后再进行运算
· 所有的浮点运算都是以双精度进行的,即使运算中只有 float 类型,也要先转换为 double 类型,才能进行运算
· char 和 short 参与运算时,必须先转换成 int 类型
2)强制类型转换:
自动类型转换是编译器根据代码的上下文环境自行判断默默地、隐式地进行的一种类型转换,不需要在代码中体现出来;强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换。强制类型转换的格式为:
其中,type_name为新类型名称,expression为表达式。示例:
无论是自动类型转换还是强制类型转换,都只是为了本次运算而进行的临时性转换,转换的结果也会保存到临时的内存空间,不会改变数据本来的类型或者值。
1)自动类型转换:
在进行程序运算时,如果遇到不同的数据类型,编译器会将参与运算的所有数据先转换为同一种类型,然后再进行计算,这是自动类型转换。转换规则:
· 转换按数据长度增加的方向进行,以保证数值不失真,或者精度不降低。例如,int 和 long 参与运算时,先把 int 类型的数据转成 long 类型后再进行运算
· 所有的浮点运算都是以双精度进行的,即使运算中只有 float 类型,也要先转换为 double 类型,才能进行运算
· char 和 short 参与运算时,必须先转换成 int 类型
2)强制类型转换:
自动类型转换是编译器根据代码的上下文环境自行判断默默地、隐式地进行的一种类型转换,不需要在代码中体现出来;强制类型转换是程序员明确提出的、需要通过特定格式的代码来指明的一种类型转换。强制类型转换的格式为:
(type_name) expression
其中,type_name为新类型名称,expression为表达式。示例:
(float) a; //将变量 a 转换为 float 类型
(int)(x+y); //把表达式 x+y 的结果转换为 int 整型
(float) 100; //将数值 100(默认为int类型)转换为 float 类型
无论是自动类型转换还是强制类型转换,都只是为了本次运算而进行的临时性转换,转换的结果也会保存到临时的内存空间,不会改变数据本来的类型或者值。