为什么出现这样的情况?
#include <stdio.h>
#include <string.h>
union ss
{
int num;
char buf[4];
};
int main()
{
union ss test;
test.num=0x12436597;
for(i=0;i<4;i++)
printf("%x\n",test.buf[i]);
return 0;
}
结果是:
ffffff97
65
43
12
#include <stdio.h>
#include <string.h>
union ss
{
int num;
char buf[4];
};
int main()
{
union ss test;
test.num=0x12436597;
for(i=0;i<4;i++)
printf("%x\n",test.buf[i]);
return 0;
}
结果是:
79
65
43
12
0x97 一个字节(1001 0111) 十进制 -105;打印的时候是以四个字节打印十六进制,-105,在四个字节里就是0xFFFFFF97;
printf("%x\n",test.buf[i]);
-->
printf("%x\n",(unsigned char)test.buf[i]);