CCS 调试发现两个无符号short类型a,b; a = ~b, 但a != ~b

原创 2015年07月08日 22:34:47

在调试ccs中, 有如下类似代码


发现unsigned short b  取反的临时变量是0xffff_0000 ,可见编译器把它扩展成32位无符号整形,然后取反。从而导致 a 和 ~b结果不一致。

如果改为short 类型,则比较相同,可见 b 扩展成32位整型填充高16位时会考虑b的类型,如果b是无符号类型的则高位填充0,如果b是有符号类型的则高位填充填充b的MSB。

相关文章推荐

【Educational Codeforces Round 3 B】【水题 基本容斥】The Best Gift n本书任选两个不能同一类型的方案数

B. The Best Gift time limit per test 2 seconds memory limit per test 256 megabytes ...

c++基本数据类型基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:

基本类型:   整型: 短整型: short int 整型: int 长整型:long int   字符型:char(分为有符号和无符号,默认有符号)   浮点型:单精度型:floa...

【C语言】编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。(辗转相除法和常规求法)

/*编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。 例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , 4)函数返回4 */ #includ...

PAT B1031 查验身份证 学会断点调试! 字符串输入两个结果一样!循环自增看清楚要在哪里申明

//这题让我认识到断点调试的极大好处!!!棒极了! //这一题调试了很久,后来改了gets为scanf("%s",str)才成功,用gets()时我也去除了换行符啊!目前仍然不知道怎么回事! #i...

对于Thinking In Java中byte,short无符号右移的理解

拜读Thinking In Java看到以下内容 若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会用到。这样可防止我们...

附录B 图示符号指南

  • 2009年03月16日 18:33
  • 101KB
  • 下载

b kb mb gb tb带单位符号的单位转换

/** 转换容量单位换算方法zk **/ function unitConver(limit){ var limit=limit.toLowerCase();//转换为小写 if(limit....

如何用两个wl-500b/g建立桥接WDS

  • 2011年05月29日 00:19
  • 25KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CCS 调试发现两个无符号short类型a,b; a = ~b, 但a != ~b
举报原因:
原因补充:

(最多只允许输入30个字)