记录一个Union和使用指针直接强转读取数据的例子
发布日期:2021-06-30 10:11:22 浏览次数:4 分类:技术文章

本文共 516 字,大约阅读时间需要 1 分钟。

例子为:

#include 
union u{ int a; short b;};int main(){ union u t; t.a=100000; t.b=10; printf("%d %hd,%d,%d\n", t.a, t.b,*(short *)(&t),*(int *)(&t)); printf("%ld %ld,%ld,%ld\n", &(t.a), &(t.b),&t,(&t)); return 0;}

反馈结果为:

 32位数据显示:

0000 0000 0000 0001 1000 0110 1010 0000    表示为100000

0000 0000 0000 0000 0000 0000 0000 1010   表示为10

0000 0000 0000 0001 0000 0000 0000 1010    表示为65546

这里可以看出本例子b将a的低位覆盖了,这里要注意union只会从低位覆盖!但是大小端存储是会导致后面的使用指针强转读值产生不一样的结果!这个结果是小端存储。

 

转载地址:https://islet.blog.csdn.net/article/details/108488396 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:为什么python的默认参数只初始化一次
下一篇:内核态栈溢出导致 Kernel panic-not syncing fatal exception in interrupt的现象

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月26日 03时34分07秒