冒号在这个结构定义中做了什么?

可能重复:
‘unsigned temp:3’是什么意思

我不明白这个结构定义。 这对我来说似乎是违法的,但显然不是:

typedef struct { unsigned i:1; } my_struct; 

我认为在没有类型的情况下将变量标记为unsigned与将其标记为unsigned int 。 但是,我对结肠感到困惑。 它有什么作用? 我的猜测是它是某种初始化器,但我不知道它意味着什么。 在我的头顶,我唯一期望在C中冒号的地方是三元运算符,这显然不是。 所以,这似乎是一个我不熟悉的结构。 任何人都可以在这个结构定义中解释冒号的目的是什么吗? 声明unsigned i:1;是什么unsigned i:1; 意思?

它将i定义为1位宽。 如果给出i:x,则它将i定义为x位宽。