union中的数据是否只有一个是有意义的
union中的数据是不是只有一个是有意义的?
union中的数据是不是只有一个是有意义的?《C++ Primer》第四版的662页,18.5节的第一段是这样说的:联合(union)是一种特殊的类。一个union对象可以有多个数据成员,但在任何时刻,只有一个成员可以有值。当将一个值赋给union对象的一个成员的时候,其他所有成员都变为未定义的。
但是下面的代码都输出了有效数据

------解决方案--------------------
记住 同 一个 时刻 只有 一个值。如:
x.i = 0x01020304;
那么:
x.bt4.b4=1
x.bt4.b3=2
x.bt4.b2=3
x.bt4.b1=4
union中的数据是不是只有一个是有意义的?《C++ Primer》第四版的662页,18.5节的第一段是这样说的:联合(union)是一种特殊的类。一个union对象可以有多个数据成员,但在任何时刻,只有一个成员可以有值。当将一个值赋给union对象的一个成员的时候,其他所有成员都变为未定义的。
但是下面的代码都输出了有效数据
#include<iostream>
#include<Windows.h>
using namespace std;
void main()
{
HANDLE h = CreateFile(L"d:\\DXSDK_Jun10.exe",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ,
0,
OPEN_EXISTING ,
0,
0);
if(h==INVALID_HANDLE_VALUE)
{
cout<<"error"<<endl;
return;
}
LARGE_INTEGER u;
BOOL B=GetFileSizeEx(h, &u);
GetLastError();
cout<< u.HighPart <<endl
<< u.LowPart <<endl;
cout<< u.QuadPart <<endl;
}
------解决方案--------------------
记住 同 一个 时刻 只有 一个值。如:
x.i = 0x01020304;
那么:
x.bt4.b4=1
x.bt4.b3=2
x.bt4.b2=3
x.bt4.b1=4