在C/C++中,整型、单精度、双精度及字符型数据可以进行混合运算,即双目运算符两边的操作数类型可以不同。当表达式中不同类型的数据进行运算时,会发生数据类型的转换。C/C++中有两种类型转换的方法:自动类型转换和强制类型转换。
自动类型转换
所谓自动类型转换是指在不同类型数据进行混合运算时,系统会自动进行数据类型的转换。对同一表达式中不同类型的数据自动进行类型转换是由C/C++编译系统自动完成的,遵循一定的规则,即:在运算时,不同类型的数据要先转换成同一类型的数据,然后进行计算,所有操作数都是向“所占存储空间更大”的操作数转换。
强制类型转换
C/C++还提供了在程序中进行强制类型转换的方法,即在表达式中可以根据需要把任意一个数据的类型转换成另一个数据类型。强制类型转换是靠强制类型转换控制运算符实现的,有两种形式:
(数据类型)操作数,此为C语言风格;
数据类型(操作数),此为C++语言风格。
(int)x%2 // C语言风格
int(x%2) // C++语言风格
注意在C语言编译器中不要使用C++风格的类型转换,否则会报错。