首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-09-10 
求解unsigned char 与char求解,如下char p122char *ts&pprintf(%8x,*ts)输出为:7a而如果改为char p

求解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

热点排行