关于字节序的有关问题,盼来解答,不胜感激

关于字节序的问题,急盼大虾来解答,不胜感激
#include <stdio.h>

int IsLittleEndian()
{
unsigned short int i = 1;
return (1 == *((char*)&i));
}

int main()
{
if(IsLittleEndian())
{
printf("Little Endian.\n");
}
else
{
printf("Big Endian.\n");
}
}

如上的代码。哪位大虾可以详细的解释一下函数IsLittleEndian()呢?不胜感激!!

------解决方案--------------------
设short占2个字节。地址是0x00 0x01
如果系统是little endian的,则对于short i = 1;
0x00 处存的是1 ,0x01处存的是0。

如果是big endian,
0x00 存 0, 0x01 存1。

*((char*)&i ,得到低地址处1个字节的内容,如果是1,说明是little endian ,不是1,则为bigendian
------解决方案--------------------
return (1 == *((char*)&i));
先(char*)强制转化成字符类型,是把&i(这个可是2个字节的哦)
这个一强制转化后char*就变成指向低字节的那个指针
再在最外面加个*,指向指针指向的那个低字节
------解决方案--------------------
1 == *((char*)&i)是指 将变量i取地址 然后转化为(char*)型 最前面的*是取这个地址指向的内容 就是判断字节的存储是低位存储 若将此函数变为下面的话 那么运行结果就是big Endian 说明int型的是高位存储
int IsLittleEndian()
{
 char i = '1';
return (1 == *((int*)&i));
}