新手级问题,一个C++语法问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:39:33
{// test2
union V {
struct X {
unsigned char s1:2;
unsigned char s2:3;
unsigned char s3:3;
} x;
unsigned char c;
} v;
v.c = 100;
printf("%d", v.x.s3);
}
中的

unsigned char s1:2;
unsigned char s2:3;
unsigned char s3:3;
那个引号是什么,没见过!
我问的是那些引号是什么意思:
就是

unsigned char s1:2;
unsigned char s2:3;
unsigned char s3:3;

这里冒号是c语言位域的用法

S1:2表示s1只占两个位,s2:3,s3:3 表示他们占三位,你把100写成二进制,最低的两位赋给s1,再数三位给s2,最高三位给s3就知道为什么这么输出了

bit field
http://caterpillar.onlyfun.net/Gossip/CppGossip/BitField.html

哪里的?printf("%d", v.x.s3); 里的话 就是设置输出格式的

冒号是不 好像是初始化变量