typedef struct{
int a:1, b:1;
}test;
a
和b
能够存储最多255的数字。如果某个变量a
存储的值大于此值,则会影响b
的值,对?我对记忆管理非常糟糕。另外,是否建议以这种方式改变结构中字段的大小?
答案 0 :(得分:1)
C中的大多数变量的大小都是整数个字节。位域是不具有的结构的一部分
必须占用整数个字节; 他们可以任意数量的位。可以将多个位字段打包到a中
单个存储单元。这些是1位bitfiel能够保持0
和-1
。
如果有更多的数字存储在1位的位域中,那么这将是未定义的行为(带符号的溢出)。
在这种情况下,更突出地在位字段中使用unsigned
类型
typedef struct{
unsigned int a:1, b:1;
}test;