C语言指针强转解引用

发布于 2022-09-04 20:19:22 字数 297 浏览 14 评论 0

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

这是为什么呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野侃 2022-09-11 20:19:22

%x 按无符号数输出, char 是有符号的认为 0xf7 是负数, 负数用补码表示. 请参阅原码 反码 补码的相关概念.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文