雁南飞原唱播放:关于结构体内用冒号(位域)的一般用法

来源:百度文库 编辑:九乡新闻网 时间:2024/03/29 13:30:33

int main(){

    union V{

        struct X {

            unsigned char s1:2;

            unsigned char s2:3;

            unsigned char s3:3; //一个位域不能超过一BYTE,所以前面三个变量共占1byte

        } x;

        unsigned char c;

    } v;

    v.c = 100;

    printf('%d', v.x.s3);

 

}

运行的结果是3.

首先,intel是小尾存储,所以1byte存储的字节是: [s3 s2 s1]

100的二进制数是01100100,从右往左,s1拿走两bit 00, s2拿走三bit 001,s3拿走三bit 011,即答案 3