【问题标题】:What does it means int i:3 in variable assignment? [duplicate]变量赋值中的 int i:3 是什么意思? [复制]
【发布时间】:2016-07-11 11:08:35
【问题描述】:

我正在尝试理解以下 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?

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

非常感谢!

【问题讨论】:

  • 它声明了一个位域,见这里:en.wikipedia.org/wiki/Bit_field
  • 为什么叫它“作业”?您在哪里看到与“作业”的相似之处?
  • 我错误地将其称为分配。这是我的第一印象,但我真的不知道其中的含义。感谢您给我正确的位置!

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


【解决方案1】:

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

因此i 和j 用3 位表示,而k 用2 位表示。

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

【讨论】:

  • downvoter 可以告诉我为什么?
  • 这不是我,但也许是反对者,尽管您应该投票关闭作为重复而不是发布答案。
  • 哦,好吧,我实际上已将问题标记为重复,无论如何我认为直接提示对 OP 可能会有所帮助..
猜你喜欢
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 2021-07-21
相关资源
最近更新 更多