通过联合体, 可以管理一个字节的每一个位, 这样是为了结省内存, 充分利用字节中的信息.
- union STATE
- {
- struct BITDATA
- {
- BOOL D0 : 1;//BOOL 的取值范围: 0 或 - 1
- BOOL D1 : 1;
- BOOL D2 : 1;
- byte D3 : 1;//byte 的取值范围: 0 或 1
- byte D4 : 1;
- byte D5 : 1;
- byte D6 : 1;
- byte D7 : 1;
- }BIT;// 须声明一个变量
- byte value;
- };
- void CMFCApplication1Dlg::OnBnClickedButton4()
- {
- STATE sta;
- sta.value = 0x17;// 整体赋值
- BOOL a1 = sta.BIT.D0;// 取出第一个位
- sta.BIT.D0 = FALSE;// 给第一个位赋值
- // 将值转成字符串
- CString str = sta.BIT.D0 ? _T("True") : _T("False");
- }
位域常用来作为设备 IO 状态管理或者权限管理. 其实也可以用数组来代替上面的功能.
来源: http://www.bubuko.com/infodetail-2621981.html