CCS 调试发现两个无符号short类型a,b; a = ~b, 但a != ~b
2015-07-08 22:34
197 查看
在调试ccs中, 有如下类似代码
发现unsigned short b 取反的临时变量是0xffff_0000 ,可见编译器把它扩展成32位无符号整形,然后取反。从而导致 a 和 ~b结果不一致。
如果改为short 类型,则比较相同,可见 b 扩展成32位整型填充高16位时会考虑b的类型,如果b是无符号类型的则高位填充0,如果b是有符号类型的则高位填充填充b的MSB。
发现unsigned short b 取反的临时变量是0xffff_0000 ,可见编译器把它扩展成32位无符号整形,然后取反。从而导致 a 和 ~b结果不一致。
如果改为short 类型,则比较相同,可见 b 扩展成32位整型填充高16位时会考虑b的类型,如果b是无符号类型的则高位填充0,如果b是有符号类型的则高位填充填充b的MSB。
相关文章推荐
- Xcode自动注释插件
- phpcms 调用 内容页 上一篇 下一篇 写法
- Xamarin.Android开发实践(十五)
- Java垃圾回收机制
- Climbing Stairs
- Ubuntu下eclipse无法输入中文的解决方案
- STL - 各个容器的使用时机
- STL - 各个容器的使用时机
- Project Euler:Problem 59 XOR decryption
- CF #308 (Div. 2)
- 在线实时生成Excel文件流供下载
- for循环语句之棋盘放粮食、百鸡百钱、纸张的折叠问题
- 6.1-1
- 关于hashCode方法的作用
- Linux内核驱动GPIO的使用
- 国嵌驱动专题一二
- Express框架常用API小解
- C++ 程序设计入门(下)- 第 7 单元 - 文件输入和输出
- leetcode刷题,总结,记录,备忘 75
- 3Sum 等类似题目分析