【问题标题】:how to declare an unsigned int in a C program如何在 C 程序中声明一个无符号整数
【发布时间】:2010-11-23 06:58:04
【问题描述】:

在这个链接上我遇到了 http://lxr.linux.no/#linux+v2.6.36/include/linux/pci.h#L299 整数声明 unsigned int is_added:1;我制作了 C 程序并在其中声明了整数,但在上面我看到了 这是什么语法?

【问题讨论】:

  • 这可能是一些预处理器的魔法发生了。
  • 为什么上面的评论有 2 票赞成?
  • @OmnipotentEntity 和两个支持者:这是一个位域。
  • 魔法何时开始在 C 中发挥作用?

标签: c bit-fields


【解决方案1】:

我想你遇到过bit-field :)

【讨论】:

  • 哈哈 :) 好的,通过阅读其余的回复,我现在能够理解上述内容。
【解决方案2】:

它是struct 的一部分,这意味着它表明该字段应该只使用一定数量的位而不是整个字节或更多。

【讨论】:

    【解决方案3】:

    这是数组中的位域声明。数字后“:”表示分配给结构的这个特定字段的位数。

    虽然您需要小心位域,因为它们的二进制表示不可移植。也就是说,您在使用不同编译器编译的接口之间传递二进制 blob,它可能不起作用。

    【讨论】:

    • 好的,现在我明白我已经完全忘记了这样的事情。
    【解决方案4】:

    这表示只使用其中的一位。

    【讨论】:

      【解决方案5】:

      structs 中,整数变量可以占用1 到31 之间的任意位数。is_added 就是这样一个一位变量。一位变量也称为标志。

      【讨论】:

      • 你从哪里得到数字 31?这是误导。您可以使用与int 一样多的宽度,至少为32。您应该对符号位有点谨慎,但是由于这里声明了unsigned int,因此它可以毫无痛苦地保持至少32 位。
      • @Jens:在 C99 中,int 的宽度可以小到 16 位。
      猜你喜欢
      • 2012-05-24
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2013-03-26
      • 2010-09-07
      相关资源
      最近更新 更多