判断CPU是大端还是小端

#include "stdafx.h"
#include <iostream>
using namespace std;

/*
#大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
#小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。
#
#union 型数据所占的空间等于其最大的成员所占的空间。对union 型的成员的存取都是
#相对于该联合体基地址的偏移量为0 处开始,也就是联合体的访问不论对哪个变量的存取都
#是从union 的首地址位置开始。如此一解释,上面的问题是否已经有了答案呢?
#
*/
bool little_endian(void)
{
    union A
    {
        int i;
        char c;
    }a;
    a.i = 1;
    return (a.c==1);
}

int _tmain(int argc, _TCHAR* argv[])
{
    if (little_endian())
        cout<<"little_endian"<<endl;
    else
        cout<<"big_endian"<<endl;
    
    return 0;
}

 

posted @ 2013-09-27 00:03  解放1949  阅读(340)  评论(0编辑  收藏  举报