实例二十七:共用体的应用

实例二十七:共用体的应用

问题描述:
编写程序,使用函数调用,将一个 unsigned long 型整数的前两个字节和后两个字节作为 unsigned int 型整数输出。

#include<stdio.h>

union aa                        //定义共用体类型
{
    unsigned short a[2];
    unsigned long b;
};
int fen(unsigned long k)
{
    union aa c,*p;
    p = &c;
    c.b = k;
    printf("The long int is %ld\n",k);
    printf("low = %u,high = %u\n",p->a[0],p->a[1]);
    return 0;
}
int main()
{
    unsigned long w;
    w = 12345678;
    fen(w);
    return 0;
}

算法思路:

  • 所谓共用体,就是几种不同类型的数据共用一组内存空间,但不能同时存放,每一瞬间只有一个成员起作用,这个成员就是最后一次存放的成员。
  • 要把一个长整型前两个字节和后两个字节分离出来,我们可以申明含有两个成员的共用体类型,其中一个长整数,另一个是用来存放长整型的前两个字节和后两个字节的一维数组(含有两个元素)。

程序心得:

  • 根据一个无符号长整型为四个字节(32位),一个无符号短整型为两个字节(16位)的情况来实现的,对于其他系统,要根据具体情况处理。

思考拓展:

利用共用体成员共享存储单元的特点,将 int 型数据的高字节和低字节分离出来。

提示:在一般 PC 系列计算机中,int 型数据的存储格式是低字节在前、高字节在后。

主要程序如下:

union un
{
	int a;
	char ch[2];
}data;
int main()
{
	scanf("%x",&data.a};
	printf("%x	%x",data.ch[0],data.ch[1];
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值