c整型中的运算总是至少以缺省整型类型的精度来进行的,所以当字符型或者短整型在进行运算时为了获得这个精度,先要提升成普通整型,再运算。

例:

char a=127;

char b=1;

char ret=a+b;

在进行运算时,先进行“整型提升”(提升成×××):

char类型的127 是:0111 1111

进行整型提升后是:00000000 00000000 00000000 01111111

char类型的1 是:0000 0001

整型提升后是:00000000 00000000 00000000 00000001

提升后在进行运算:

00000000 00000000 00000000 01111111

00000000 00000000 00000000 00000001

结果 00000000 00000000 00000000 10000000

然后再发生截断:ret=1000 0000

在这个例子中计算的结果与算术结果没有区别,但是入股在下面这个例子中区别就大了:

ret=((a<<2)+b)>>2,

如果不进行整型提升,则当移位是会将高位丢失。

转载于:https://blog.51cto.com/11142019/1760079

隐式类型转换和整型提升相关推荐

  1. C语言操作符详解 隐式类型转换 (整型提升 算数转换)

    目录 一.算术操作符 二.左移操作符 右移操作符 1.二进制序列 2.左移操作符 3.右移操作符 3.1.逻辑运算/算术运算 3.2.对于移位运算符,不要移动负数位,这是标准未定义的 3.3.对于移位 ...

  2. 算术类型转换、整型提升

    分享一个很有意思的小tip 有人在编写代码时运行出了一个让人摸不着头脑的结果: -20>0U 怎么会是真值呢?? 这位朋友还特意检验了一下0U的值,当然是0没错.可是出现这样的结果到底是为什么呢 ...

  3. 类型转换:隐式转化(算数转换,整型提升,混合提升,赋值转换),强制转换【C语言】

    类型转换 隐式转化 算数转换 整型提升 混合提升 赋值转换 强制转换 编译器使用注意 小结 类型转换 隐式转化 不需要人为参与而产生的默认转称为隐式转化. 隐式转化,是计算机语言实现层面最难的,指针是 ...

  4. 隐式类型转换——C语言中的整型提升

    整型提升概念: C语言中的整型算术运算总是至少以缺省整型类型的精度来进行的. 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升. 整型提升的意义 三点说明 ...

  5. C语言隐式类型转换(字符类型以及短整型的运算规则)

    C的整型算术运算总是至少以缺省整型类型的精度来进行的.         为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升. 举个例子: char a = ...

  6. C语言----表达式求值之隐式类型转换

    前言: 表达式求值的顺序一部分是由操作符的优先级和结合性决定. 同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型,称为隐式类型转换,下面给出隐式类型转换的详细讲解,希望对大家有所帮助~ 隐 ...

  7. c++ 隐式类型转换

    隐式类型转换由编译器自动执行,不需程序员介入. 何时发生隐式类型转换 1. 在混合类型的表达式中,操作数会被转换为相同类型 int ival; double dval; ival >= dval ...

  8. 数据类型,隐式类型转换

     关于数据类型: 1.常量也是有类型的 常量数据大体分两类,一类是带点(实型,浮点型),一类是不带点叫整型. 编译器对带点,通常默认为double,不带点通常编译为int 2.对于数据   .2  ...

  9. 关于显式类型转换以及隐式类型转换

    哈喽嗷,铁汁们,咱们又见面了.是我嗷,一个不正经楼主. 首先提出一点,关于这个小细节专栏,看了绝对没好处(滑稽) 咳咳,咱们言归正传. 目录 隐式类型转换 ①算术运算中的隐式转换 规则一:字符和整数的 ...

最新文章

  1. python中x=x+1的读法-python中xrange和range的区别
  2. sublime text3 最新 license注册码分享 2018
  3. not enough actual parameters for macro 'min'(QT与vs2010)
  4. php识别号码格式豹子,[转载]php新手入门之PHP常用特殊运算符号
  5. (十九)hashlib模块
  6. Deeplab V1、v2要点
  7. Tiktok的红利期,你要加入吗?
  8. yum php5.6源码,5.2 YUM升级PHP5.6
  9. 读《学习JavaScript数据结构与算法》 第二章
  10. ndnsim r语言 ubuntu_Python语言---数据库
  11. mnist数据集matlab导入,MNIST数据集转为matlab可读的mat格式
  12. Ebbinghaus English Memory ( 艾宾浩斯英语记忆 ) 程序 之 设计思路 与 代码实现
  13. 5种Python深度学习库和资料
  14. 如何卸载快压病毒流氓软件--不停自动下载安装App
  15. 【转】什么是Online Learning
  16. 商城类小程序的主要功能有哪些?
  17. npm-shrinkwrap
  18. 通俗易懂的Latex教程文档
  19. 计算机无法连接网络错误651,Win7宽带连接错误651的原因和解决方法
  20. 一文搞定子网划分!子网掩码!超详细例题解析!

热门文章

  1. 浅谈JavaScript中按键事件的e.keyCode || e.which || e.charCode
  2. 查看git是否安装_Java程序员的必备Linux运维技能-安装git
  3. linux网络掉线频繁怎么设置,ubuntu频繁掉线
  4. getcontentpane java_java – 为什么getcontentpane()未定义?
  5. python php 通信,Python和php通信乱码问题解决方法
  6. 如何在Python中调用Windows的cmd命令?
  7. 学习深度网络需要直观的感知
  8. 树莓派共享文件至电脑(samba)
  9. 节能信标灯设计第一版本:预备实验
  10. 滤波器电路的Python仿真