union中嵌套struct

遇到这样一个面试题目,让说出u.d的值。

#include <stdio.h>

#define u_char unsigned char
typedef union U
{
	struct
	{
		char a : 8;
		char b : 8;
		char c : 8;
		char d : 8;
	}s;
	int d;
}U;

int main()
{
	U u;
	u.d = 0;
	u.s.a = 1; //如果是给
	u.s.b = 2;
	u.s.c = 3;
	u.s.d = 4;
	printf("%d\n", u.d);
	return 0;
}

不妄加揣测了,直接看调试截图再来理解:


按照赋值顺序应该是以union为主导0在了1的前边,高地址存的低位。打印的时候,是正常的小端读取方式。

还有一点,union的存的方法我在笔试中答成了是按照大端的方式存的,现在说来它是一个畸形儿,什么端都不是,就是直接存的。




你可能感兴趣的:(union中嵌套struct)