昨天晚上笔试,遇到一个题,虽然做对了,但是不知原因,请高人详解。
#include <stdlib.h>
#include <stdio.h>
union{
int n;
char bchar[4];
}UN;
int main(void)
{
UN.bchar[0] = 0;
UN.bchar[1] = 1;
printf("%d\n", UN.n);
return 0;
}
结果为256.当讲UN.bchar[1]改为2,则结果为512。结果依次递增(是256的整数倍)。
为什么是这样啊。
我知道在一个共用体中只有最后一个被赋值的内部变量才是有效的。
上述结果如何解释呢?