关于C中的Struct Memory Managemet

时间:2018-01-31 10:38:42

标签: c memory

typedef struct{
 int a:1, b:1;
}test;

ab能够存储最多255的数字。如果某个变量a存储的值大于此值,则会影响b的值,对?我对记忆管理非常糟糕。另外,是否建议以这种方式改变结构中字段的大小?

1 个答案:

答案 0 :(得分:1)

C中的大多数变量的大小都是整数个字节。位域是不具有的结构的一部分 必须占用整数个字节; 他们可以任意数量的位。可以将多个位字段打包到a中 单个存储单元。这些是1位bitfiel能够保持0-1

如果有更多的数字存储在1位的位域中,那么这将是未定义的行为(带符号的溢出)。

在这种情况下,更突出地在位字段中使用unsigned类型

typedef struct{
 unsigned int a:1, b:1;
}test;