69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
union test_t{
struct test2_t{
unsigned char a[4];
int b;
}test2;
int c;
}test;
int main(void)
{
test.c=0x1234;
printf("a[0]: %x\n*",test.test2.a[0]);
printf("a[1]: %x\n*",test.test2.a[1]);
}
以上参考一下吧
代码有错误,注意双引号的内容,test.test2.a[0]和test.test2.a[1]是在双引号外的,估计是手误;
输出结果是:
a[0]: 34
a[1]: 12
低位0x34, 高位:0x12;
由于union的占内存的大小是有最大变量的长度决定的。即有test2决定,sizeof(test2)是8(32位系统),因此c是0x1234,等同于test2.a也是0x1234,因此a[0]是0x34, a[1]是0x12