数据类型转换
- 表达式中出现多种类型数据的混合运算时,需要进行类型转换
1.隐含转换
- 编译系统自动对数据进行转换
- 基本原则:低类型数据 → 高类型数据
char | short | int | long | long long | float | double |
低类型 → 高类型 |
注:
- 将非0的非布尔值赋值给布尔类型数据,结果为 true;
将为0的非布尔值赋值给布尔类型数据,结果为 false
int x = 5;
bool y = x;
cout << y;
/*
1
*/
- 将浮点数赋值给整数类型数据,结果只保留整数部分,丢失小数部分
将整型数赋值给浮点类型数据,结果的小数部分记为0
float pai = 3.14159;
int y = pai;
cout << y;
/*
3
*/
2.显式转换
- 强制转换为另一种指定的数据类型
C风格
类型说明符 (表达式)
(类型说明符) 表达式
float pai = 3.14159, fractionPart;
int wholePart;
wholePart = (int) pai;
fractionPart = pai - (int) pai;
cout << wholePart << endl << fractionPart;
/*
3
0.14159
*/
C++风格
const_cast <类型说明符> (表达式);
dynamic_cast <类型说明符> (表达式);
reinterpret_cast <类型说明符> (表达式);
static_cast <类型说明符> (表达式);
- 一般最常用为 static_cast <> ();
float pai = 3.14159;
int wholePart;
wholePart = static_cast <int> (pai);
cout << wholePart;
/*
3
*/
注:
程序中 (int) pai 与 int (pai) 与 static_cast <int> (pai) 三者完全等价