#include <iostream>
using namespace std;
union V
{
struct X
{
unsigned char s1:2;
unsigned char s2:3;
unsigned char s3:3;
}x;
unsigned char c;
}v;
int main(){
v.c = 100;
cout<<v.x.s3<<endl;
return 0;
}
请问结构体中的s1,s2,s3表示是什么意思?位数吗?输出的怎么是乱码?
s1后面的
:
表示s1只占unsigned char
的2
个bit,那么s1的取值范围是[0, 3]
s2,s3同理
那么整个
struct x
只占一个字节,你可以sizeof确认一下好了,现在
v.c=100
后s1,s2,s3分别是多少呢?100用8位二进制表示是
01100100
,再假设当前CPU是小端模式的,那么s1=00b,s2=001b,s3=011b所以s3输出的当然是乱码。。。