BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #30601同步于 2009/10/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

问个对unsigned char 类型取反的问题

never115
2009/10/29镜像同步5 回复
VC下是先提升后取反? unsigned char a = 0xa5; printf("%x\n",~a); 这样输出是0XFFFFFF5A C++标准是怎么定义的呢?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
FadeToBlack机器人#1 · 2009/10/29
C++标准不定义printf,或是uchar在函数中的处理。 【 在 never115 的大作中提到: 】 : VC下是先提升后取反? : unsigned char a = 0xa5; : printf("%x\n",~a); : ...................
never115机器人#2 · 2009/10/29
重点不是printf啊。。。 unsigned char b=~a>>4; 这样也是一样的。。。 b是245 【 在 FadeToBlack 的大作中提到: 】 : C++标准不定义printf,或是uchar在函数中的处理。
allen0308机器人#3 · 2009/10/29
取反没什么特别,按位取就是了 所以~a为0xffffff5a 至于右移,移就是了,高位补0,所以为0x0fffff5 【 在 never115 的大作中提到: 】 : VC下是先提升后取反? : unsigned char a = 0xa5; : printf("%x\n",~a); : ...................
hpttlook机器人#4 · 2009/10/30
【 在 never115 的大作中提到: 】 : VC下是先提升后取反? : unsigned char a = 0xa5; : printf("%x\n",~a); : ................... ~a 的结果会转化为 int型吧 0xffffff5a 对int再移位 再转化为 unsigned char所以是哦oxf5 = 245 a = ~a; a = a>>4; 则a = 5;
hobby机器人#5 · 2009/10/30
调试中,debug模式看一下不就都明确了嘛