数据类型从低到高依次是:char,short,int,unsigned,long,unsigned long,float,double;精度越来越高
1.隐含转换(自动转换)
在算术运算和关系运算中,参与运算的操作数类型不一致,就会产生隐含转换,通常是将低类型的数据转换成高类型的数据。
隐含转换是从低精确度转换到高精确度,没有数据损失,所以是安全的转换。
2.强制类型转换
强制转换的语法形式有两种:
类型说明符(表达式); 这种是c++强制转
(类型说明符)表达式; 这种是c语言的强制转换
将高数据类型转换到低数据类型的时候,用到强制转换,强制转换是不安全的,通常会造成数据损失。
这种类型的转换是暂时的、一次性的,被强制转换的表达式本身的值没有产生改变
如:
float f = 3.5;
int k = int(f); //执行完这条语句后,k的值为3,f的值仍然是3.5;
在标准c++中,强制类型转换操作符有:static_cast,dynamic_cast,const_cast和reinterpret_cast.
其语法形式为:const_cast<类型说明符>(表达式);
dynamic_cast<类型说明符>(表达式);
const_cast<类型说明符>(表达式);
reinterpret_cast<类型说明符>(表达式);