DerRauber

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年2月21日

摘要: 今天在调试代码的时候,碰到一个很奇怪的现象,一条简单的语句,执行结果就是不对。代码如下int pack_size = recbuffer[1] + (rec_buffer_[0] << 8)其中recbuffer为char类型,recbuffer[1]的值是0xd6,recbuffer[0]的值是0x01,预期的结果pack_size应为0x01d6。根据c++的算术运算隐式转换规则,recbuffer[1]和recbuffer[0]都会被提升为整型,pack_size = 0xd6 + 0x100, 而实际执行结果确是0xd6。令我百思不得其解。实在是没办法,将代码拆分为如下:i 阅读全文
posted @ 2013-02-21 20:34 hotzenplotz 阅读(329) 评论(0) 推荐(0) 编辑