美文网首页
数据类型转换

数据类型转换

作者: 執著我們的執著 | 来源:发表于2018-08-27 09:51 被阅读0次
写在前面

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


1. 隐式类型转换

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

  • (1) 混合类型的算术表达式中
    以最宽的数据类型作为目标转换类型,也称为算术转化
    EX:
int iVal = 3;
double dVal = 3.1415;

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

2. iVal = dVal;
dVal被裁剪成 int 类型
  • (3) 函数参数
    实参类型和形参类型不相同
    这种情况下,目标函数参数类型为**形参类型**
    EX:
double func(double dVal);

...

int main()
{
    double dTmp;

    dTmp = func(1);
实参 1 被提升为 double 类型 1.0
}
  • (4) 函数返回值类型与函数返回的值的类型不一致,会将返回的值的类型(return)自动转换成函数返回值类型
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) static_cast:可被用于强制隐型转换(例如:non-const对象转型成const对象,int转型为double等等),它还可以用于很多这样的转换的反向转换(例如:void *指针类型转成有类型的指针,基类指针转型为派生类指针),但是不能将const转成non-const`
  • (2) dynamic_cast:主要用于执行"安全的向下转型(safe down casting)",即为确定一个对象是否是一个继承体系中的一个特定类型
  • (3) const_cast:一般用于强制消除对象的常量性。它是唯一能做到这点的C++风格强制转换
  • (4) reinterpret_cast:用于底层的强制转换,导致实现依赖(implementation-dependent)即不可移植的结果,例如将一个指针类型转型成一个整数,这种转换在底层代码以外极为罕见。

参考1
参考2

相关文章

  • JAVA基础第四天

    JAVA数据类型---布尔类型; 数据类型转换自动数据类型转换 强制数据类型转换

  • JavaScript基础03- 数据类型转换

    数据类型转换 所谓的数据类型转换,就是将一种数据类型转换为另一种数据类型,所以,数据类型转换包括,转换为字符串类型...

  • JS里的数据类型转换

    在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换。 1, 显式数据类型转换 a:转数字: 1)Numb...

  • javascript-强制类型转换和运算符

    强制类型转换 将其它数据类型转换为String 将其它数据类型转换为Number 将其它数据类型转换为Boolea...

  • Python自学笔记——3.基础数据类型转换

    基础数据类型转换 数据类型转换的形式自动类型转换强制类型转换 可变数据类型: 列表, 字典, 集合不可变数...

  • 3-数据类型转换

    数据类型转换 将数据有当前类型变化为其他类型的操作就是数据类型转换。 数据类型转换分类: 数据类型转换一共分为2类...

  • Java基础语法_数据类型转换

    数据类型转换 当数据类型不一样时,将会发生数据类型转换。 数据类型转换——自动转换(隐式) 特点:代码不需要进行特...

  • 其他类型转换成字符串类型

    数据类型强制转换 字符串相关数据类型转换

  • JavaScript字符串转换为其他类型(五)

    目录: 为什么要数据类型转换? 数据类型怎么转换? 一、为什么要数据类型转换? 上节课咱们讲到了数据类型好比人的职...

  • day04-python中的循环与分支结构

    01-数据类型转换 1、数据类型的自动转换(主要是整型和浮点型之间自动转换) 2、数据类型的强制转换格式:类型名(...

网友评论

      本文标题:数据类型转换

      本文链接:https://www.haomeiwen.com/subject/jonbiftx.html