正确答案:
小端模式下:266;
第一步分清楚高低地址:a.x[0] 为低地址,a.x[1]为高地址;
第二步转换为16进制 :a.x[0] = 10 = 0x0a, a.x[1] = 1 = 0x01;
第三步合成:a.i = 0x0000010a = 266;
大端模式下:167837696;
第一步分清楚高低地址:a.x[0] 为低地址,a.x[1]为高地址;
第二步转换为16进制 :a.x[0] = 10 = 0x0a, a.x[1] = 1 = 0x01;
第三步合成:a.i = 0x0a010000 = 167837696;
#include <iostream>
using namespace std;
union
{
int i;
char x[2];
}a;
int main()
{
//全局变量未初始化,a.i默认为0, a.x[2] = "";
a.x[0] = 10;
a.x[1] = 1;
printf("%d\n", a.i);
return 0;
}