int main(void)
{
unsigned int a = 0xFFFFFFF7;
unsigned char i = (unsigned char)a;
char* b = (char*)&a;
printf("%08x, %x", i, *b);
return 0;
{
unsigned int a = 0xFFFFFFF7;
unsigned char i = (unsigned char)a;
char* b = (char*)&a;
printf("%08x, %x", i, *b);
return 0;
}
结果 000000F7 FFFFFFF7
解析:
int 4字节,他在内存中是反着存的,就是说内存中的a其实是F7 FF FF FF。这里定义的char*b,其实b指向的就是F7,char 8位,第一位是符号位,如果是负的,则用%x输出会多6个F,无符号就能正确