3.7.11 转换运算符

转换(cast)这个词通常意为“浇铸成一个模型”。如果编译器能够明白的话,它会自动把一种数据类型转换为另一种类型。例如,如果赋一个整型值给一个浮点变量,编译器会暗地里调用一个函数(或更可能插入代码)来把整型转换为浮点型。转换允许使用这种显式类型变换,或在转换没有正常情况下发生时强制它实现。

为了实现转换,要用括号把所想要转换的数据类型(包括所有的修饰符)括起来放在值的左边。这个值可以是一个变量、一个常量、由一个表达式产生的值或是一个函数的返回值。下面是一个例子:

3.7.11 转换运算符 - 图1

转换是很有用的,但是它也造成了令人头痛的事,因为在某些情况下,它强制编译器把一个数据看做是比它实际上更大的类型,所以它占用了更多的内存空间,这可能会破坏其他数据。这种情况经常不是出现在上述简单的类型转换时,而在转换指针时发生。

C++有一个另外的转换语法,它遵从函数调用的语法。这个语法给参数加上括号而不是给数据类型加上括号,类似于函数调用:

3.7.11 转换运算符 - 图2

当然对于上面的情况,我们实际上不需要转换,只要写200f(实际上,一般编译器会对上面的表达式作转换)。转换一般用于变量,而不用于常量。