2. 类型转换

2.1 C++转换方式

  • 自动类型转换(隐式转换):遵循一定的规则,由编译系统自动完成
  • 强制类型转换:把表达式的运算结果强制转换成所需的数据类型

C++自动执行很多类型的转换:

  • 将一种算数类型的值赋值给另一种算数类型的变量时

    double d=5;
    
  • 表达式中包含不同类型时

    double d=2.0;
    int i=10;
    double x=d+i;
    
  • 将参数传递给函数时

2.2 初始化和赋值进行的转换

  • 值赋值给取值范围更大的类型

    short s=12;
    int i=s;
    
  • 值赋值给取值范围更小的类型

    double d=3.1415926;
    float f=d;
    

  • 0赋值给bool变量时,将被转换为false,非零值转换为true

2.3表达式中的转换

自动类型转换

同一个表达式中包含多种不同的算数类型时,C++将执行两种自动转换:

  • 一些类型在出现时会自动转换

    • boolcharunsigned charsigned char值转换为inttrue转换为1,false转换为0,这些被称为整型提升
    • 如果shortint短,则unsigned short转换为int,如果长度相同,则unsigned short转换为unsigned int,从而确保在对unsigned short提升时不会丢失数据
  • 有些类型在与其他类型同时出现在表达式中时将被转换
    • 当运算涉及两种类型时,较小的类型将被转换为较大的类型。
  • 编译器通过校验表来确定在表达式中执行的转换
    • 如果有一个操作数类型为long double,则将另一个操作数转换为long double
    • 否则,如果有一个操作数类型为double,则将另一个操作数转换为double
    • 否则,如果有一个操作数类型为float,则将另一个操作数转换为float
    • 否则,说明操作数都是整型,因此执行整型提升

强制类型转换

C++允许通过强制类型转换机制显式地进行类型转换

强制类型转换格式:
(typeName) value;typeName (value);

long l=(long) num;
//或者
long l=long(num);

强制类型转换不会修改转换的变量本身,而是创建一个新的、指定类型的值

优先级问题:

(int)a+b;//对a进行强制类型转换
(int)(a+b);//对(a+b)的结果进行强制类型转换

【C++基础语法 2】——类型转换[自动类型转换/强制类型转换]相关推荐

  1. C++中的向上类型转换和向下类型转换+四种强制类型转换

    转自博客:http://blog.csdn.net/wangweitingaabbcc/article/details/7720979# 在c++的世界中有这样两个概念,向上类型转换,向下类型转换,分 ...

  2. 自动与强制类型转换小总结

    一: 普通类型的类型转换: 当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实质内容,(自动) 而较高类型的数据转换为较低类型时则可能有些数据丢失.(强制) 如int a=( ...

  3. linux 强制类型转换,转载 指针强制类型转换

    当我们初始化一个指针或给一个指针赋值时,赋值号的左边是一个指针,赋值号的右边是一个指针表达式.在我们前面所举的例子中,绝大多数情况下,指针的类型和指针表达式的类型是一样的,指针所指向的类型和指针表达式 ...

  4. c语言数组变量的类型转换,C语言强制类型转换

    概要: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给 ...

  5. html强制类型转换,前端-JS强制类型转换之转换成数字类型

    在上一篇博客<前端-数据类型>中我们说到JavaScript的数据类型.那么下面我们介绍一下JavaScript数据类型强制转换成数字类型. 代码示例 下面的代码中,主要实现将一个全部是数 ...

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

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

  7. (基础)JavaScript类型转换(强制类型转换+隐式类型转换)

    JavaScript  中有五种基本数据类型(其中包括 String.Number.Boolean.Function.Symbol).三种对象类型(其中包括 Object.Date.Array)和两种 ...

  8. C语言基础专题 - 数据类型与强制类型转换(编辑中)

    C语言 - 数据类型与强制类型转换 1.C数据类型 可以参考的相关知识链接: C语言基础专题 - 指针 C语言基础专题 - 数组 C语言基础专题 - 字符串 C语言基础专题 - 结构体 C语言基础专题 ...

  9. C语言数据类型转换(自动类型转换+强制类型转换)

    自动类型转换 自动类型转换就是编译器默默地.隐式地.偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生. 1)将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换,例如 floa ...

最新文章

  1. LeetCode weekly contest 190 周赛
  2. 安装Linux双系统取消快速启动,为什么在双启动时禁用Windows 8上的快速启动?
  3. vim 寄存器 操作_vim指令
  4. mysql怎么拆字符串_MySQL截取和拆分字符串函数用法示例
  5. a标签无跳转的死链接
  6. sublime text_Sublime Text Editor赠品报告和获胜者
  7. 【转】Objective-C语法property详解
  8. Flutter之Widget 更新机制updateChild原理浅析
  9. Java8 实战系列-03-lambda 表达式实战
  10. 今天来黑一黑Intel的傲腾
  11. DS18B20温度传感器
  12. FFMPEG音视频解码流程MP4音视频文件流读取(转)
  13. qtableview 查询_QTableView 操作SQLite
  14. 移动端强大的富文本编辑器richeditor-android
  15. 一种多源信息融合方法及其应用(Matlab代码实现)
  16. win7与internet时间同步出错_电脑时间同步出错怎么办 win7/xp电脑时间同步出错解决方法...
  17. windows快捷键完整版分享
  18. 【Java 8 GC 调优】“代”(Generation)
  19. prgrmz的作品集
  20. 华顺信安 白帽汇安全研究院二面复盘

热门文章

  1. mysql 读未提交数据_mysql事务之未提交读(Read uncommitted)
  2. windows中cmd命令行下复制/粘贴的操作
  3. 互联网女皇2013年趋势报告:移动行业仍处早期
  4. s6 edge编译android,不痛不痒 Galaxy S6 edge升级Android 5.1.1体验
  5. 腾讯云轻量数据库LighthouseDB使用心得
  6. 褥羊毛,终于攒够了付费文章的简书钻
  7. 数据库身份证号加密密码加密_使用密码加密数据
  8. UEFI源码解析之EVENT
  9. Failed at the chromedriver@2.46.0 install script
  10. 嵌入式软件开发面试题总结四