C++隐性类型转换

来源:互联网 发布:剑灵灵剑捏脸数据图 编辑:程序博客网 时间:2024/04/27 16:50

_**C++中隐性类型转换**
c++在做算术运算时,同一个算术运算符,要求它的操作数类型要一致,如果不一致,编译器会自动对操作数进行类型转换

转换规则:

  • 转换表
  • 这里写图片描述

·

  • 一般来讲,是向上转型,在float,double,long double 指尖是完全适用的!
  • 一般int一下的操作都会转换成int型计算,包括printf 这种运算也会自动转换。

转型的时候会用到扩展和截断的知识:
理解这一点的关键是明白计算机中的二进制数据在转换时除了补符号位,和补零之外,数据是不会改变的,只是根据它的类型不同而被编译器解释为其他数据,比如

char a = 0xa0;unsigned char b = a;printf("%x %x",a,b);打印结果:ffffffa0 a0

这段代码中实现了char和unsigned char,以十进制形式输出。char被符号位扩展成int型,而unsigned char 被零扩展成int。

另外,还需要注意的是c++中cout输出指针类型,并不是输出指针本身(地址)而是指向的内容

0 0