移位操作讨论

[复制链接]
2185|4
 楼主| qiguibao 发表于 2012-11-8 09:23 | 显示全部楼层 |阅读模式
g_TrackLen=(u16)((g_GlobalBuf[2]<<8)|g_GlobalBuf[1]);
其中,g_TrackLen为u16,g_GlobalBuf为u8的数组。正常来说,u8左移8位,就是0了。但该语句执行的结果是正确的,是不是这行代码会对右侧的量强制类型转换呢?
ayb_ice 发表于 2012-11-8 09:43 | 显示全部楼层
新版的C标准有整型提升功能
499734424 发表于 2012-11-8 16:48 | 显示全部楼层
学习了
499734424 发表于 2012-11-8 16:49 | 显示全部楼层
翻了一下书
谭浩强 C语言 第3版 3.7节 P54
虽没有直接提及“整型提升功能”概念,但是有说明
qqlvjh 发表于 2012-11-9 12:00 | 显示全部楼层
"u8左移8位,就是0了。"这句话应理解不对,应理解为"U8左移8位结果是u8*256", 如果再会送给U8,此时候u8就是0了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部