码迷,mamicode.com
首页 > 其他好文 > 详细

隐式类型转换和整型提升

时间:2016-04-04 21:18:21      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:隐式类型   整型提升   

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,

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


本文出自 “11132019” 博客,请务必保留此出处http://11142019.blog.51cto.com/11132019/1760079

隐式类型转换和整型提升

标签:隐式类型   整型提升   

原文地址:http://11142019.blog.51cto.com/11132019/1760079

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!