C++新经典
上QQ阅读APP看书,第一时间看更新

2.2.4 强制类型转换运算符

强制类型转换运算符是一对圆括号,参考表2.6,其作用是将一个表达式转换成所需要的类型。其一般形式为:

举例说明如下:

(1)(double)a:将变量a转换成double型,并不是变量a本身的类型发生变化,而是让整个表达式的结果类型发生变化。请记住:强制类型转换时,得到一个所需类型的中间变量,原来变量的类型没有发生变化。

(2)(int)(x+y):将x+y的值转换成int型。注意,表达式“x+y”是用()括起来的,如果写成(int)x+y,那就只是将x转换成int型,然后与y相加。

(3)(float)(5%3):将5%3的结果值转换成float型。

看看如下范例:

总结一下讲过的两种类型数据转换:

(1)自动类型转换。不同类型数值变量进行混合运算时,系统会尝试将它们的变量类型统一,这在运算时不需要开发者参与,系统自动进行类型转换,如3+5.8,转换规则请参考图2.21。

(2)强制类型转换。当自动类型转换无法达到目的时,就需要用强制类型转换,如“%”取余运算符,要求两侧均为整型量,如果x是float类型,x%3就不合法,必须要用(int)x%3,因为强制类型转换运算符优先级高于取余运算符%,所以会先计算(int)x,得到一个整型中间变量,再对3进行取余操作。代码如下: