联合

来源:互联网 发布:云计算行业需要学什么 编辑:程序博客网 时间:2024/05/17 03:14
union V{struct X{unsigned char s1 : 2;unsigned char s2 : 3;unsigned char s3 : 3;} x;unsigned char c;};void main(){V v;v.c = 100;printf("%d", v.x.s3);}

定义了一个联合,也就是x和c占用同一个空间,这里面x采用了位域表示方法,也就是s1只占2位,s2占3位,s3占3位,总共8位。而这个空间又可以解释为一个字符c,因此对v.c=100来说,下一句是把这个100占用的空间解释成结构x,而100换成二进制后为01100100,从后往前分别截取2,3,3位分别赋给s1,s2,s3.因此s3获得最高的011,也就是3,输出结果就是3

0 0
原创粉丝点击