必备技能2.10:强制类型转换
我们还可以把一个表达式的值强行地转换为某种特定的类型,这叫做强制类型转换。强制的类型转换是一种显示的类型转换。C++定义了五种强制的类型转换。其中四种在转换的时候是允许有多细节的控制的,我们将在后面学习到对象以后再介绍。剩下一种是我们现在就可以学习的。它就是C++中最常用的强制类型转换。它可以把任意的类型转换成别的类型。它也是早期版本的C++唯一支持的转换。他的通用形式如下:
(type)expression
这里,type代表的是目标类型,是我们要把expression转换成type的类型。例如:如果我们希望表达式x/2是按照浮点数的方式来运算的,就可以这样写:
(float) x / 2;
强制类型转换被认为是一种运算符。作为一种运算符,它是单目的,和其它单目的运算符有着相同的优先级。
有时候,强制类型转换是非常有用的。例如,我们可能用到整数来做循环控制,但是还需要对其按照float类型类进行运算,正如下面的程序所展示的一样:
// Demonstrate a cast
#include <iostream>
using namespace std;
int main()
{
int i;
for (i=1; i <= 10; ++i )
cout << i << " / 2 is: " << (float) i / 2 << '\n';
return 0;
}
程序的输出结果如下:
1 / 2 is: 0.5
2 / 2 is: 1
3 / 2 is: 1.5
4 / 2 is: 2
5 / 2 is: 2.5
6 / 2 is: 3
7 / 2 is: 3.5
8 / 2 is: 4
9 / 2 is: 4.5
10 / 2 is: 5
如果上面的程序中没有强制的类型转换(float),就只能进行整数的除法了。在这里,强制类型转换确保了我们想要的答案的小数部分。