返回信息流VC下是先提升后取反?
unsigned char a = 0xa5;
printf("%x\n",~a);
这样输出是0XFFFFFF5A
C++标准是怎么定义的呢?
这是一条镜像帖。来源:北邮人论坛 / cpp / #30601同步于 2009/10/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
问个对unsigned char 类型取反的问题
never115
2009/10/29镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
C++标准不定义printf,或是uchar在函数中的处理。
【 在 never115 的大作中提到: 】
: VC下是先提升后取反?
: unsigned char a = 0xa5;
: printf("%x\n",~a);
: ...................
重点不是printf啊。。。
unsigned char b=~a>>4;
这样也是一样的。。。
b是245
【 在 FadeToBlack 的大作中提到: 】
: C++标准不定义printf,或是uchar在函数中的处理。
取反没什么特别,按位取就是了
所以~a为0xffffff5a
至于右移,移就是了,高位补0,所以为0x0fffff5
【 在 never115 的大作中提到: 】
: VC下是先提升后取反?
: unsigned char a = 0xa5;
: printf("%x\n",~a);
: ...................
【 在 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;