数据类型转换

2018-08-27  本文已影响0人  執著我們的執著
写在前面

C/C++编程中常见数据类型转换,包括隐式类型转换和显式类型转换。


1. 隐式类型转换

隐式类型转换在以下典型情况下发生

int iVal = 3;
double dVal = 3.1415;

iVal + dVal     // iVal 会被提升为 double 类型:3.0
1. int * p = 0;
常数 0 为 int 类型,被转换为 int * 类型的指针,表示空指针

2. iVal = dVal;
dVal被裁剪成 int 类型
double func(double dVal);

...

int main()
{
    double dTmp;

    dTmp = func(1);
实参 1 被提升为 double 类型 1.0
}
double diff (int iVal1, int iVal2)
{
    return iVal1 - iVal2;
return返回的值的数据类型被提升为double型
}

2. 显式类型转换(四种强制类型转换机制)

C++ 基本类型的指针之间不含有隐式转换(void *除外),需要显式转换
实现例如:
int *ip;
char *pc = (char *)ip;
C++引入4种强制类型转换操作符用于显式转换:
static_cast,dynamic_cast,const_cast 和 reinterpret_cast
每一种都有适用的特定目的,具体如下:

参考1
参考2

上一篇 下一篇

猜你喜欢

热点阅读