文章目录
类型转换
在C++语言中,某些类型之间是有关联的,如果两种类型有关联,那么它们就可以相互转换,同理,如果两种类型可以相互转换,那么它们就是有关联的。
在C++语言中,类型转换被分为隐式类型转换和显式类型转换。
隐式类型转换
隐式类型转换:由编译器根据类型转换规则设法将运算对象的类型统一,编译器自动执行,无需程序员的介入。
会发生隐式类型转换的情况:
- 在大多数表达式中,比int类型小的整形值提升为较大的整数类型。
- 在条件语句中,非布尔值转换成布尔值。
- 初始化过程中,初始值转换成变量类型。
- 赋值语句中,赋值号右侧的运算对象转换成赋值号左侧运算对象的类型。
- 如果算术运算或者关系运算的对象有多种类型,需要被转化为同一类型。
- 函数调用时也会发生隐式类型转换。
- 数组转换成指针,在大多数用到数组的表达式中,数组名自动转换成指向数组首元素的指针。但也有例外情况:
- 当数组被用做decltype关键字的参数,其返回类型为由n个某一类型构成的数组,例如:int ia[10]{};decltype(ia)返回的是有10个整数构成的数组。
- 作为取地址符&,sizeof及typeid等运算符的运算对象时上述类型的转换也不会发生。
- 用一个引用来初始化数组,上述类型的转换也不会发生。例如:int ia[10