有时候我们可能会写出下面的代码:
#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呢?这是不一定的,与平台和编译器有关,不注意的话可能就因此而造成问题,编程时一定要多加注意。