int i:3在变量赋值中意味着什么?

时间:2016-03-23 23:03:52

标签: c struct operators variable-assignment bit-fields

我试图理解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

我知道不是运营商。那它是做什么的? 此外,有人可以解释如何实现这一输出吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

数字指定每个字段的位长度。

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

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