隐式类型转换和整型提升
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
隐式类型转换和整型提升相关推荐
- C语言操作符详解 隐式类型转换 (整型提升 算数转换)
目录 一.算术操作符 二.左移操作符 右移操作符 1.二进制序列 2.左移操作符 3.右移操作符 3.1.逻辑运算/算术运算 3.2.对于移位运算符,不要移动负数位,这是标准未定义的 3.3.对于移位 ...
- 算术类型转换、整型提升
分享一个很有意思的小tip 有人在编写代码时运行出了一个让人摸不着头脑的结果: -20>0U 怎么会是真值呢?? 这位朋友还特意检验了一下0U的值,当然是0没错.可是出现这样的结果到底是为什么呢 ...
- 类型转换:隐式转化(算数转换,整型提升,混合提升,赋值转换),强制转换【C语言】
类型转换 隐式转化 算数转换 整型提升 混合提升 赋值转换 强制转换 编译器使用注意 小结 类型转换 隐式转化 不需要人为参与而产生的默认转称为隐式转化. 隐式转化,是计算机语言实现层面最难的,指针是 ...
- 隐式类型转换——C语言中的整型提升
整型提升概念: C语言中的整型算术运算总是至少以缺省整型类型的精度来进行的. 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升. 整型提升的意义 三点说明 ...
- C语言隐式类型转换(字符类型以及短整型的运算规则)
C的整型算术运算总是至少以缺省整型类型的精度来进行的. 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升. 举个例子: char a = ...
- C语言----表达式求值之隐式类型转换
前言: 表达式求值的顺序一部分是由操作符的优先级和结合性决定. 同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型,称为隐式类型转换,下面给出隐式类型转换的详细讲解,希望对大家有所帮助~ 隐 ...
- c++ 隐式类型转换
隐式类型转换由编译器自动执行,不需程序员介入. 何时发生隐式类型转换 1. 在混合类型的表达式中,操作数会被转换为相同类型 int ival; double dval; ival >= dval ...
- 数据类型,隐式类型转换
关于数据类型: 1.常量也是有类型的 常量数据大体分两类,一类是带点(实型,浮点型),一类是不带点叫整型. 编译器对带点,通常默认为double,不带点通常编译为int 2.对于数据 .2 ...
- 关于显式类型转换以及隐式类型转换
哈喽嗷,铁汁们,咱们又见面了.是我嗷,一个不正经楼主. 首先提出一点,关于这个小细节专栏,看了绝对没好处(滑稽) 咳咳,咱们言归正传. 目录 隐式类型转换 ①算术运算中的隐式转换 规则一:字符和整数的 ...
最新文章
- python中x=x+1的读法-python中xrange和range的区别
- sublime text3 最新 license注册码分享 2018
- not enough actual parameters for macro 'min'(QT与vs2010)
- php识别号码格式豹子,[转载]php新手入门之PHP常用特殊运算符号
- (十九)hashlib模块
- Deeplab V1、v2要点
- Tiktok的红利期,你要加入吗?
- yum php5.6源码,5.2 YUM升级PHP5.6
- 读《学习JavaScript数据结构与算法》 第二章
- ndnsim r语言 ubuntu_Python语言---数据库
- mnist数据集matlab导入,MNIST数据集转为matlab可读的mat格式
- Ebbinghaus English Memory ( 艾宾浩斯英语记忆 ) 程序 之 设计思路 与 代码实现
- 5种Python深度学习库和资料
- 如何卸载快压病毒流氓软件--不停自动下载安装App
- 【转】什么是Online Learning
- 商城类小程序的主要功能有哪些?
- npm-shrinkwrap
- 通俗易懂的Latex教程文档
- 计算机无法连接网络错误651,Win7宽带连接错误651的原因和解决方法
- 一文搞定子网划分!子网掩码!超详细例题解析!
热门文章
- 浅谈JavaScript中按键事件的e.keyCode || e.which || e.charCode
- 查看git是否安装_Java程序员的必备Linux运维技能-安装git
- linux网络掉线频繁怎么设置,ubuntu频繁掉线
- getcontentpane java_java – 为什么getcontentpane()未定义?
- python php 通信,Python和php通信乱码问题解决方法
- 如何在Python中调用Windows的cmd命令?
- 学习深度网络需要直观的感知
- 树莓派共享文件至电脑(samba)
- 节能信标灯设计第一版本:预备实验
- 滤波器电路的Python仿真