这道类型准换题答案是什么啊,为什么啊,求大师讲解
#include <stdio.h>
int main()
{
unsigned int a = 0xFFFFFFF7;
unsigned char i = (unsigned char)a;
char* b = (char*)&a;
printf("%o8x, %o8x", i, *b);
return 0;
}
[解决办法]
假设整型有32位
如果按char型有8位处理,i的值为0xf7
*b的值要看机器的大小端设置。如果是大端,*b为0xff,否则为0xf7
所以最后的输出为fffffff7,ffffffff 或者
fffffff7,fffffff7
因为最后输出时是按整型,都扩展成了整型的位数