为什么这段程序的运行结果是266?解决方法

为什么这段程序的运行结果是266?
#include "stdafx.h"
#include "stdio.h"

union
{
int i;
char x[2];
}a;

int func(int x); 

int _tmain(int argc, _TCHAR* argv[])
{
a.x[0] = 10; 
a.x[1] = 1;
printf("%d",a.i);
return 0;
}

------解决方案--------------------
10的二进制 00001010
1的二进制 00000001

整个a的内存情况大致如:.. 00000001 00001010

输出就是256
------解决方案--------------------
这个现象在不同CPU系统中有不同的内存分部,具体如下:
Little endian
31 24 23 16 15 8 7 0 
i
x[3] x[2] x[1] x[0]
0x00 0x00 0x01 0x0a


Big endian
31 24 23 16 15 8 7 0
i
x[0] x[1] x[2] x[3]
0x0a 0x01 0x00 0x00

一般我们现在都是little endian的系统,所以是0x00010a=266.(在此问题中x[2],x[3]不存在)