![C++新经典](https://wfqqreader-1252317822.image.myqcloud.com/cover/184/44510184/b_44510184.jpg)
上QQ阅读APP看书,第一时间看更新
2.2.4 强制类型转换运算符
强制类型转换运算符是一对圆括号,参考表2.6,其作用是将一个表达式转换成所需要的类型。其一般形式为:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p55_852561.jpg?sign=1738940809-1exrYxtUBV7TFQE1isVlNyGV3fIjFtNK-0-11876f39f7dc9fcb4c603a24c40b690c)
举例说明如下:
(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型。
看看如下范例:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p56_85260.jpg?sign=1738940809-saJUQTq4nbkif9IAVzFwcDi6J6yeVnDi-0-42e946f4fdb4a1c2d33c075496ca8cf2)
总结一下讲过的两种类型数据转换:
(1)自动类型转换。不同类型数值变量进行混合运算时,系统会尝试将它们的变量类型统一,这在运算时不需要开发者参与,系统自动进行类型转换,如3+5.8,转换规则请参考图2.21。
(2)强制类型转换。当自动类型转换无法达到目的时,就需要用强制类型转换,如“%”取余运算符,要求两侧均为整型量,如果x是float类型,x%3就不合法,必须要用(int)x%3,因为强制类型转换运算符优先级高于取余运算符%,所以会先计算(int)x,得到一个整型中间变量,再对3进行取余操作。代码如下:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p56_85261.jpg?sign=1738940809-GH4tCoEqaCHlOkzGIWrNVmloTes9SZ6x-0-8e6323773822f171a3b5ff4c3ccc3921)