【类型转换】                                             

  C++有11种整型和3种浮点类型,当对不同的类型进行计算时,C++会自动执行类型的转换。

【自动类型转换】

  执行情况:

    · 将一种算数类型赋给另一种算数类型时
    · 表达式中包含不同的类型时
    · 将参数传递给函数时 
    · 强制类型转换

  1、赋值时进行的转换

    · 值将被转换成接受变量的类型。
     此时将一个值赋给范围更大的类型通常不会出现什么问题,但是反过来就应该考虑截断(丢掉小数)和精度损失的问题。
    · 将0赋给bool类型被转换为false,非零转换为true

  2、表达式中的转换

   规则如下:

    · long double > double > float >  long int >= int > short >= wchar_t > char > bool(小的向大的转)
    · signed 向 unsigned转换

  3、传递参数时的转换

    · 传递参数时的类型转换通常由C++函数原型控制。
    · 另外为保持与传统的C语言向兼容,在将参数传递给取消原型对参数控制的函数时,将float参数提升为double.

  4、强制类型转换

    · C语言形式 (typename) Val;
    · C++形式 typename (Val);
      新的格式的想法是,让强制类型转换就像是函数的调用
    · Stroustrup认为C语言的强制类型转换太过粗暴因此 C++还引用了4中强制类型转换操作符:

      1)、dynamic_cast

        · dynamic_cast只能将指向派生类对象的基类指针或引用转换为派生类的指针或引用,
          若用于其他转换则指针为空,引用则抛出异常。此为向下类型转换。
        · dynamic_cast转换符只能用于指针或者引用。dynamic_cast转换符只能用于含有虚函数的类。
         dynamic_cast转换操作符在执行类型转换时首先将检查能否成功转换,如果能成功转换则转换之,
         如果转换失败,如果是指针则反回一个0值,如果是转换的是引用,则抛出一个bad_cast异常,
         所以在使用dynamic_cast转换之间应使用if语句对其转换成功与否进行测试,
         比如pd=dynamic_cast<D*>(pb); if(pd){…}else{…},或者try{};catch(bad_cast){}

      2)、static_cast

        · 完成向上类型转换,即将指向派生类的指针或引用转换为指向同一层次中的一个基类的指针或引用。
        · static_cast<typename> (Val)

      3)、reinterdivt_cast

        · reinterpret_cast操作符代替了大多数其它C风格类型转换的使用。
          reinterpret_cast将指针转换为其它指针类型、将数字转换为指针或将指针转换为数字。

      4)、const_cast

        · 刚才所讨论的3种类型转换操作都没有涉及“常量属性”,即不能使用它们移去对象的常量属性。
          为此,我们要使用const_cast操作符。
           除了const和volatile关键字之外,它的类型参数必须和对象参数的类型相匹配。

转载于:https://www.cnblogs.com/CocoonFan/archive/2013/02/28/2937971.html

C++ 入门2 ---- 类型转换相关推荐

  1. IOS开发语言Swift入门连载---类型转换

    IOS开发语言Swift入门连载-类型转换 类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例. 类型转换在 Swift 中使用is 和 as 操作符实现.这两个操作符提供了一种简单达 ...

  2. java基础语法入门到类型转换问题,运算符,数据输入,数组,方法概述,Debug模式,以及10个小案例的详细介绍。

    java基础语法 目录 java基础语法 1. Java概述 1.1 Java语言发展史(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应 ...

  3. 04-c#入门(类型转换)

    "无论是什么类型,所有的数据都是一系列的位,即一系列0和1.变量的含义是通过解释这些数据的方式来传达的."--这句原话是书上翻译的,不过后一句话总感觉理解起来不是很通俗,自己觉得这 ...

  4. Java入门数据类型转换(羊驼)

    一.数据类型转换 1.隐式类型转换 从低级类型向高级类型的转换,系统将自动执行,程序员无须进行任何操作.这种类型的转换称为隐式类型转换. 代码实例如下 int x=50; //声明int的变量x fl ...

  5. C语言基础知识入门【2022】

    一.C语言基础知识入门前言 C语言一经出现就以其特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等,也是其它众多高级编程语言的鼻祖语言,所以说学习C ...

  6. MySQL入门系列:查询简介(四)之类型转换和分组查询

    前文回顾 之前我们介绍了一些简单查询的方式以及MySQL中表达式和函数的简单使用,本篇文章继续介绍如何使用MySQL进行查询. 类型转换 类型转换的场景 只要某个值的类型与上下文要求的类型不符,MyS ...

  7. JavaScript入门(part5)--数据类型转换

    学习笔记,仅供参考,有错必纠 参考自:pink老师教案 文章目录 JavaScript入门 获取变量数据类型 数据类型转换 转换为字符串 转换为数字型 转换为布尔型 JavaScript入门 获取变量 ...

  8. java类作用域标识符_java入门 (二) 标识符、数据类型、类型转换、变量、常量、作用域...

    java入门(二) 标识符 数据类型 类型转换 变量.常量.作用域 本次笔记引用B站:狂神说,虽然早就会了,现在回头来敲下基础,加深印象 1.标识符: java所有的组成部分都需要名字.类名丶变量名丶 ...

  9. 【Arduino】开发入门教程【六】数据类型转换函数

    Arduino数据类型转换函数有 char() : 将任意类型的值转换成char类型; byte():  将任意类型的值转换成byte类型; int():  将任意类型的值转换成int类型; long ...

  10. Python入门 类型转换

    Python入门: 02 类型转换 NP7 小数化整数 描述 日常生活中我们会遇到很多小数,但是有的人不喜欢小数,因此会用四舍五入的方式将其去掉.在Python中我们更加简单,可以利用强制类型转换将小 ...

最新文章

  1. maven课程 项目管理利器-maven 3-9 maven依赖冲突 4星
  2. 后RCNN时代的物体检测及实例分割进展
  3. 《达芬奇密码》中的yinhui
  4. c语言如何输出动态数组,C语言动态数组的使用实现代码
  5. Linear Mixde Model:线性混合模型简介
  6. mysql id 主键 外键_mysql主键 外键
  7. chrome调试工具使用技巧汇总
  8. 商业智能的研究,主要集中在哪三个方面?
  9. 如何将图片格式转换为ico格式?
  10. 鲜枣课堂之深入浅出数字信号处理
  11. java 接收 char字符型
  12. BVS未带安全帽人脸识别抓拍系统
  13. 总结2018,规划2019
  14. 杭州新生每日一问:天天洗头会导致脱发吗
  15. 仿ios相机apk_icamera相机下载-icamera仿苹果软件v4.0_5577安卓网
  16. 迅闪2011客户端(0862)安装异常处理及注意事项
  17. 区块链重构零售价值体系 | 苏宁区块链技术应用论坛
  18. crontab定时任务配置(crontab定时任务配置到秒)
  19. 阿里推荐系统:DSTN(一)
  20. 研究交流群:10465389,讨论c++嵌入式方面的,最好是研究生和程序热爱者,申请加入时请注明就读学校名称。

热门文章

  1. mac上利用minikube搭建kubernetes(k8s)环境
  2. python3 numpy二维方法_Python numpy:基于坐标创建二维值数组
  3. idea上安卓 Android SDK的安装
  4. html 自定义title,5行JS自定义title提示效果(Tooltip)
  5. Spring源码之bean的加载(四)获取单例
  6. 【渝粤教育】电大中专跨境电子商务理论与实务 (3)作业 题库
  7. 自家公司关于git commit 的规范
  8. SV fork-join
  9. java基础语法day03
  10. JAVA学习笔记(五)