70,037
社区成员
发帖
与我相关
我的任务
分享
typedef struct
{
unsigned int a:2;
unsigned int b:3;
unsigned int c:3;
}BitData;
typedef union
{
BitData Data;
char cData;
}UnionData;
UnionData unionData;
unionData.cData = 100;
cout<<"cData = "<<unionData.cData<<endl; //值为:d ,为什么?不是刚赋值100吗?
cout<<"Bit Data = "<<unionData.Data.a<<endl;// 0 这后面几个勉强理解,但高手说的更通俗些就更好了
cout<<"Bit Data = "<<unionData.Data.b<<endl;// 1
cout<<"Bit Data = "<<unionData.Data.c<<endl;// 3
typedef struct
{
unsigned int a:2;
unsigned int b:3;
unsigned int c:3;
}BitData;
typedef union
{
BitData Data;
char cData;
}UnionData;
UnionData unionData;
unionData.cData = 100;
cout<<"cData = "<<unionData.cData<<endl; // 因为cData成员是字符型变量,计算机将100 ASCII码来对待(因为在计算机中字符以ASCII存的)存储,d的ASCII码的十进制恰好是100(十六进制位64H),所以是d.
d的ASCII码为64H,表示为二进制为0110 0100。
cout<<"Bit Data = "<<unionData.Data.a<<endl;// 0 a占两位,既是00,既是0
cout<<"Bit Data = "<<unionData.Data.b<<endl;// 1 b占三位,既是001,既是1
cout<<"Bit Data = "<<unionData.Data.c<<endl;// 3 c占三位,既是011,既是3