c - 结构C中 ":"是什么意思

标签 c struct

<分区>

Possible Duplicate:
What does 'unsigned temp:3' means

  struct Test
  {
      unsigned a : 5;
      unsigned b : 2;
      unsigned c : 1;
      unsigned d : 5;
  };

  Test B;
  printf("%u %u %u %u", B.a, B.b, B.c, B.d); // output: 0 0 0 0
  static struct   Test A = { 1, 2, 3, 4};

谁能解释一下 : 在结构中的用途,printf 只是输出 0 所以我假设这些不是默认值,但是那它们是什么?

还有人可以解释一下为什么 A.a, A.b, A.c, A.d 输出 1, 2, 1, 4 而不是 1, 2, 3, 4

最佳答案

那是一个bit field .

它基本上告诉编译器嘿,这个变量只需要 x 位宽,所以相应地打包其余字段,好吗

关于c - 结构C中 ":"是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11197931/

相关文章:

c++ - 无法将 PFX 导入 Microsoft 示例 key 存储提供程序(加密提供程序开发工具包)

c - 使用有限的字符串自动填充数组元素

c - 在 c 中的 header 中使用枚举

c - 具有特定要求的纯C通用双向哈希表

c - 0177 与 177 及其补语

c - 使用指向指针的指针初始化矩阵?

c++ - for循环输出不显示

c - 访问结构或 union 中的填充是否安全?

c - 如何在 C 中存储值 10^20?

c - 这个简单的双指针示例中发生了什么