小编Fra*_*ois的帖子

char 和 int 上的 C 结构位域之间的区别

当在 C 中使用位字段时,我发现了与用于声明字段的实际类型相关的意想不到的差异。

我没有找到任何明确的解释。现在,问题已经确定,因此,尽管没有明确的回应,但这篇文章可能对面临同样问题的任何人都有用。不过,如果有人能给出正式的解释,那就太好了。

以下结构在内存中占用 2 个字节。

struct {
  char field0 : 1; // 1 bit  - bit 0 
  char field1 : 2; // 2 bits - bits 2 down to 1
  char field2 ;    // 8 bits - bits 15 down to 8
} reg0;
Run Code Online (Sandbox Code Playgroud)

这个占用内存4个字节,问题是为什么?

struct {
  int  field0 : 1; // 1 bit  - bit 0 
  int  field1 : 2; // 2 bits - bits 2 down to 1
  char field2 ;    // 8 bits - bits …
Run Code Online (Sandbox Code Playgroud)

c struct sizeof bit bit-fields

4
推荐指数
1
解决办法
2765
查看次数

标签 统计

bit ×1

bit-fields ×1

c ×1

sizeof ×1

struct ×1