变量赋值中的 int i:3 是什么意思?

What does it means int i:3 in variable assignment?

我正在尝试理解 C 中的以下代码:

struct values{
  int i:3;
  int j:3;
  int k:2;
};

int main(){
    struct values v = {-6,2,5};
    printf("%d %d %d", v.i,v.j,v.k);
}

此代码产生以下输出:

2 2 1

我试图理解结构 中使用的 int 值的赋值是什么意思,即: int i:3 ?

我知道 : 不是运算符。那么它有什么作用呢? 另外,有人可以解释一下这个输出是如何实现的吗?

非常感谢!

数字指定每个字段的长度(以位为单位)。

因此 ij 以 3 位表示,而 k 以 2 位表示。

顺便说一句,这个问题显然是 this question 的重复问题,我建议您阅读一个非常好的答案。