指针类型的转换,该怎么解决

指针类型的转换
C/C++ code

#include <stdio.h>

int main(void)
{
    unsigned int a = 0xfffffff7;
    unsigned char i = (unsigned char)a;
    char * b = (char *)&a;

    printf("%08x\n%08x\n", i, *b);

    return 0;
}


运行结果:
C/C++ code


i  = 000000f7
*b = fffffff7



问题就是关于*b的,b是一个指向char型的指针,将&a解释成(char*)的类型,从而*b也就是a的最高位的那个字节,所以我感觉*b结果应该是0x000000ff,那里错了?

------解决方案--------------------
引用楼主 chikuang110 的帖子:
问题就是关于*b的,b是一个指向char型的指针,将&a解释成(char*)的类型,从而*b也就是a的最高位的那个字节,所以我感觉*b结果应该是0x000000ff,那里错了?

------解决方案--------------------
引用楼主 chikuang110 的帖子:
C/C++ code
#include <stdio.h>

int main(void)
{
unsigned int a = 0xfffffff7;
unsigned char i = (unsigned char)a;
char * b = (char *)&a;

printf("%08x\n%08x\n", i, *b);

return 0;
}
运行结果:
C/C++ code
i = 000000f7
*b = fffffff7
问题就是关于*b的,b是一个指向char型的指针,将&a解释成(char*)的类型,从而*b也就是a的最高位的那个字节,所以我感…