关于网友提出的“ char printf %x问题”问题疑问,本网通过在网上对“ char printf %x问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 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
unsigned char 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呢?
解决方案1: %d都会扩展为int类型,0x80的符号位为1,所以做符号扩展的时候,无符号数前面填充0为00000080,有符号数前面填充1为ffffff80。
以上介绍了“ char printf %x问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2016946.html