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

char printf %x有关问题

2012-09-27 
char printf %x问题char sOption[5]memset(sOption,0x80,5)for(i0i5i++)printf(\nsOption[%d]%x\t

char printf %x问题
char sOption[5];
memset(sOption,0x80,5);
for(i=0;i<5;i++)
printf("\nsOption[%d]=%x\t",i,sOption[i]);

  打印出来的是
sOption[0]=ffffff80
sOption[1]=ffffff80
sOption[2]=ffffff80
sOption[3]=ffffff80
sOption[4]=ffffff80

  unsignedchar sOption[5];
memset(sOption,0x80,5);
for(i=0;i<5;i++)
printf("\nsOption[%d]=%x\t",i,sOption[i]);

  打印出来的是
sOption[0]=80
sOption[1]=80
sOption[2]=80
sOption[3]=80
sOption[4]=80

为什么前面那种方式会打印前面的FFFFFF呢?

[解决办法]
%d都会扩展为int类型,0x80的符号位为1,所以做符号扩展的时候,无符号数前面填充0为00000080,有符号数前面填充1为ffffff80。

热点排行