主题:以16进制打印unsigned char的问题
代码如下:
#include <stdio.h>
int main(int argc,char *argv[])
{
unsigned char a[2];
char b[2];
a[0] = 0x7f;
a[1] = 0xf0;
b[0] = 0x7f;
b[1] = 0xf0;
printf("a[0] is %02x\n",a[0]);
printf("a[1] is %02x\n",a[1]);
printf("b[0] is %02x\n",b[0]);
printf("b[1] is %02x\n",b[1]);
printf("c is %02x\n",c);
}
下面是执行结果
[root@localhost unsigned char]# ./a.out
a[0] is 7f
a[1] is f0
b[0] is 7f
b[1] is fffffff0
我的问题是:我不是很明白变量b[1](char型,值为0xf0),以%02x方式打印出来为什么是fffffff0。我可以肯定和类型转换有关系,b[1]到最后肯定被转换成了int型,但不能完全搞清楚当中的原因。请各位指教哈
#include <stdio.h>
int main(int argc,char *argv[])
{
unsigned char a[2];
char b[2];
a[0] = 0x7f;
a[1] = 0xf0;
b[0] = 0x7f;
b[1] = 0xf0;
printf("a[0] is %02x\n",a[0]);
printf("a[1] is %02x\n",a[1]);
printf("b[0] is %02x\n",b[0]);
printf("b[1] is %02x\n",b[1]);
printf("c is %02x\n",c);
}
下面是执行结果
[root@localhost unsigned char]# ./a.out
a[0] is 7f
a[1] is f0
b[0] is 7f
b[1] is fffffff0
我的问题是:我不是很明白变量b[1](char型,值为0xf0),以%02x方式打印出来为什么是fffffff0。我可以肯定和类型转换有关系,b[1]到最后肯定被转换成了int型,但不能完全搞清楚当中的原因。请各位指教哈