#include <QCoreApplication>
#include <QDebug>
//#include <QLabel>
#include<iostream>
using namespace std;
union _calibrateState{
struct
{
char spindle:1;
char belt:1;
char reserved:6;
} bit;
char byte;
} ;
int main(int argc, char *argv[])
{
char a;
char b =1;
union _calibrateState calibrateState;
calibrateState.byte = 0;
QCoreApplication w(argc, argv);
// a = calibrateState.byte;
// a = a+48;
// cout<<a ;
// a =calibrateState.bit.spindle ;
// a = a+48;
// cout<<a ;
calibrateState.bit.spindle = 1;
calibrateState.bit.belt = 1;
if(calibrateState.bit.spindle == 1)
{
a = calibrateState.bit.spindle;
a = a+48;
cout<<a ;
}
/*总结 bit只能赋值,不能输出(没有匹配的类型),byte可以赋值可以输出*/
//原因:char:1 不存在该类型 不能单独存在,可以对其赋值,不能对别人赋值
//根据debug显示 单独存在时 1为-1 0为0
//推测可以再建立结构体 存在char:1 进而可以赋值,类型不同不能赋值
/**
* 结构体操作基本概念
* 声明
* 初始化
* 传参
* 内存对齐
* 位域
*/
//这次 出现bug 原因
//1, qDebug 和cout 输出类型
//2,C++11 下 结构体位域单独存在时 的意义
return w.exec();
}
C++ 结构体 位域操作 采坑记录之结构体成员无法对外赋值
最新推荐文章于 2023-05-12 23:12:26 发布