不同类型数据的存储长度和存储方式不同,一般不能直接混合运算,需要进行类型的转换。C语言的类型转换分为自动类型转换和强制类型转换。
·自动类型转换
自动类型转换有系统自动完成,又称隐式转换。
这里时是引用
C语言按照如图将类型进行分级。运算结果的类型取决于表达式中的最高级别的数据类型。
函数类型转换
向函数传递不一致类型的数据以及返回和函数类型不一致的数据都会导致系统自动进行类型转换。例如:
我们可以看到,在函数return之前,z还是7.500000,一旦return了,就会自动转换为int类型。
函数类型的转换类型由参数类型和函数类型决定,类似于赋值语句转换,当类型差异较大时系统无法转换,将会报错。
·强制类型转换
系统无法自动转换的类型需要由程序员来进行强制类型转换,又称为显性转换。
(类型名)(表达式);
例如:
(int)(2+2.56789);
结果为4,小数部分会直接截去。
·类型转换的副作用
类型转换的副作用包括类型级别的提升与降低,符号位的扩展,符号位零扩展,误差与溢出等等。在设计程序时要合理设定数据类型,避免数值的变化和精度的丢失。