C++ UNION的问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 13:33:45
#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;

union SAMPLE
{
int x;
char y;
double z;
};

int main(int argc, char *argv[])
{
SAMPLE sample;
sample.z = 0;
sample.x = 65;
cout<<"x = "<<sample.x<<" y = "<<sample.y<<" z = "<<sample.z<<endl;
sample.z = 5*pow(2.,32);
cout<<"x = "<<sample.x<<" y = "<<sample.y<<" z = "<<sample.z<<endl;
sample.y='D';
cout<<"x = "<<sample.x<<" y = "<<sample.y<<" z = "<<sample.z<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
//*****输出**************
x = 65 y = A z = 3.21143e-322
x = 0 y =

共用体的所有成员共用的一块内存,也就是说任何成员的值都存在这块内存里,你对任何一个成员赋值,都将改变内存的值(在内存中是二进制),只不过读取时,将二进制值按类型转换过来。
x=65是最后一次赋值,它有效。
x=65没有问题, y=A(ASCII码是65),z=3.21143*10^(-322)请后来人解释