2.4.2 显式转换
一般来说,能够进行隐式转换意味着编译器认为转换是合理的或者是安全的。此外,C++(www.cppentry.com)还支持显式转换,显式转换是用户手动指出需要转换的类型。显式转换意味着编译器能够找到一个转换方式,但是它不保证这个转换是否安全,所以需要程序员额外指出。C++(www.cppentry.com)的显式转换提供了更精确的语义和对其进一步扩展的可能。
在C++(www.cppentry.com)中,数据类型的显式转换可以通过运算符()来实现。在()中加上需要转换的目标数据类型,放在变量之前即可。例如,需要将变量a转换为整型数据类型,其表达式为(int )a。
下面程序实现了数据类型之间的显式转换,将整型数据类型通过运算符()显式转换为长整型数据类型,将字符型变量通过运算符()显式转换为整型变量。实现代码如下:
- #include <iostream>
- using namespace std;
- int main()
- {
- int a=100; //定义整型变量
- long b; //定义长整型变量
- b=(long)a; //强制类型转换
- cout<<"a="<<a<<","<<"b="<<b<<endl;
- char ch='a'; //定义字符型变量并初始化
- a=(int)ch; //强制类型转换
- cout<<"ch="<<ch<<","<<"a="<<a<<endl;
- system("pause");
- return 0;
- }
上述代码只是将2.4.1节中隐式转换的代码改为显式转换,即在第7行和第10行中加上了转换运算符及目标数据类型,其实现的结果应与隐式转换的结果相同。将上述程序输入到DEV-C++(www.cppentry.com)编辑器中,编译并运行,结果如图2.16所示。
|
| (点击查看大图)图2.16 显示转换结果 |
可以看出,该程序使用了语句"b=(long)a;"将整型变量a的类型强制转换为长整型,使用了语句"a=(int)ch;"将字符型变量ch的类型强制转换为整型。因此,其运行后的效果与图2.15相同。