conversion类型转换1(隐式转换)----C++学习之路

来源:互联网 发布:2009年流行的网络歌手 编辑:程序博客网 时间:2024/06/14 01:02

  1.隐式转换:

从概念上来说,隐式转换就是编译器帮你转换的,你看不见的。

例子:

int a = 3.54 + 4;
这个例子很明显a=7。但是从类型的转换顺序来看,可能与自己想的不太一样。

当在表达式中,含有int与double,那么int会转化成double类型,例子中的4就会转换成doulb类型,得到结果7.54这个doulbe类型的值。

但是,a的类型是不能改变的,所以double又转换成为int,得到7.

  2.算术转换

概念:将一种算术类型转换成另一种算术类型。

最明显的例子就是运算符的运算对象会转换成最宽的类型,如果算术中含有long double,那么不管其他类型是什么都会转换成long double。

还有一个例子就是第一点中提到的,double 与int共存时候,会自动转换成double。

  3.整形提升

概念:把小整数类型转换成大整数类型。例如bool中的false提升为int的0,true提升为int的1.

较大的char类型(wchar_t,char16_t,char32_t)提升为int,unsigned int,long unsigned long,long long,unsigned long long 中最小的类型,前提就是转换后的类型

要包含原来的类型的所有可能的值。

  4.数组转换成指针

数组会自动转换成为指向数组首元素的指针。当然,在decltype & sizeof typeid 中是不会有类似的转换。

int ia[10];int* p=ia;



原创粉丝点击