一个大端小端问题

有时候我们可能会写出下面的代码:

#include <iostream>

using namespace std;

struct test{
    unsigned short v1;
    unsigned short v2;
};
int main()
{
    unsigned int x=1;
    test* t=(test*)&x;
    cout<<t->v1<<" "<<t->v2<<endl;
    return 0;
}

或者

#include <iostream>

using namespace std;

struct test{
    unsigned int v1:16;
    unsigned int v2:16;
};
int main()
{
    unsigned int x=1;
    test* t=(test*)&x;
    cout<<t->v1<<" "<<t->v2<<endl;
    return 0;
}

这样的代码运行结果如何呢?v1与v2谁1谁0呢?这是不一定的,与平台和编译器有关,不注意的话可能就因此而造成问题,编程时一定要多加注意。

posted @ 2014-08-27 16:32  caoyingjie  阅读(116)  评论(0编辑  收藏  举报