一个关于移位的问题

2019-03-24 09:33发布

本帖最后由 zhubeilife 于 2016-2-21 14:51 编辑

程序如下:
  1. <font size="4">unsigend char A,B,C;
  2. long int Resulst;
  3. A = 0xff;
  4. B = 0xff;
  5. C = 0xff; </font>
复制代码如果表达式为:
  1. Result = (A<<16) + (B<<8) + C;
  2. 结果为:0x0000FFFF
复制代码我发现因为是数据类型的原因,所以我加了强制类型转换,但是结果如下:
  1. Result = ((long int)A<<16) + (B<<8) + C;
  2. 结果为:0x00FEFFFF
复制代码我一直没有想明白为啥得到的结果为FE,请大家帮我看一下,十分感谢
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
huaiqiao
2019-03-25 13:00
看来还是跟运算优先级有关系的,一般为了避免这个或者为了不产生歧义,多加括号啦。

一周热门 更多>

相关问题

    相关文章