运算优先级、类型转换
运算符优先级
混合运算时数据类型的转换
一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致。
在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。
将一个非布尔类型的算术值赋给布尔类型时,算术值为0则结果为false,否则结果为true。
将一个布尔值赋给非布尔类型时,布尔值为false则结果为0,布尔值为true则结果为1
将一个浮点数赋给整数类型时,结果值将只保留浮点数中的整数部分,小数部分将丢失。
将一个整数值赋给浮点类型时,小数部分记为0。如果整数所占的空间超过了浮点类型的容量,精度可能有损失。
混合运算时数据类型的转换——显式转换
显式类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型。
语法形式
类型说明符(表达式)
(类型说明符)表达式
类型转换操作符<类型说明符>(表达式)
类型转换操作符可以是:
const_cast、dynamic_cast、reinterpret_cast、static_cast
例:int(z), (int)z, static_cast<int>(z)
三种完全等价