union共用体类型嵌入结构体的认识

#include <stdio.h>
#include <stdlib.h>

union 
{
	int i;
	struct
	{
		char first;
		char second;
	}sql_l;
}number;

int main(void)
{
	number.i=0x44454445;
	printf("%c %#x\n",number.sql_l.first,number.sql_l.first);
	printf("%c %#x\n",number.sql_l.second,number.sql_l.second);
	printf("%#x\n",number.i);
	number.sql_l.first='c'; 
	number.sql_l.second='d';
	printf("%#x\n",number.i);
	printf("%d\n",number.i);
	return 0;
}
/*
 * 程序的输出结果为:
 *E 0x45      //“E”在ASCII码中的十六进制值为45,所以输出“E”
 *D 0x44      //“D”在ASCII码中的十六进制值尾44,所以输出“D”
 *0x44454445  //“i”的值原样输出
 *0x44456463  //“c”在ASCII码中的十六进制值为63,所以变量“i”的第八位变成了63
 			  //“d”在ASCII码中的十六进制值为64,所以变量“i”的第八位变成了64
 *1145398371  //十进制的输出结果
 *从上面的结果可以看出:当给i赋值后,其低八位是first的值,而高八位是second的值,
 *当给first和second赋字符后,i的值也跟随发生变化。
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值