unsigned int a = 0xfffffff7;
char* p = (char*)&a;
printf("%x\n", *p);
return 0;
输出结果是 fffffff7
unsigned int a = 0xfffffff7;
unsigned char* p = (unsigned char*)&a;
printf("%x\n", *p);
return 0;
输出结果是 f7
这是为什么呢?
unsigned int a = 0xfffffff7;
char* p = (char*)&a;
printf("%x\n", *p);
return 0;
输出结果是 fffffff7
unsigned int a = 0xfffffff7;
unsigned char* p = (unsigned char*)&a;
printf("%x\n", *p);
return 0;
输出结果是 f7
这是为什么呢?
6 回答6.9k 阅读✓ 已解决
1 回答3.3k 阅读
1.1k 阅读
%x 按无符号数输出, char 是有符号的认为 0xf7 是负数, 负数用补码表示. 请参阅原码 反码 补码的相关概念.