读书人

求解unsigned char 与char,该怎么处理

发布时间: 2012-09-10 22:20:12 作者: rapoo

求解unsigned char 与char
求解,如下
char p=122;
char *ts=&p;
printf("%8x",*ts);

输出为:7a
而如果改为

char p=254;
char *ts=&p;
printf("%8x",*ts);

输出为fffffffe
?




[解决办法]
printf的%x会解释为int类型,相当于会自动把p从char类型扩展到int类型:
1、122是正数所以其符号扩展为0,相当于0x0000007a;
2、254是负数所以其符号扩展为1,相当于0xfffffffe。
[解决办法]
char p=254;
char *ts=&p;
printf("%8x",*ts);

有符号char类型,正数最大就是127,最高位是符号位
254存储到p里面,相当于-2(0xfe),按补码存的
负数的符号位是1,扩展的时候是前面全都是1

读书人网 >C语言

热点推荐