#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的值也跟随发生变化。
*/
union共用体类型嵌入结构体的认识
最新推荐文章于 2024-09-12 15:42:39 发布