【发布时间】:2020-09-11 17:14:34
【问题描述】:
大约 3-4 小时后开始阅读 C 中的位域,但我无法理解它们是如何工作的。比如我不明白为什么程序有输出:-1, 2, -3
#include <stdio.h>
struct REGISTER {
int bit1 : 1;
int : 2;
int bit3 : 4;
int bit4 : 4;
};
int main(void) {
struct REGISTER bit = { 1, 2, 13 };
printf("%d, %d, %d\n", bit.bit1, bit.bit3, bit.bit4);
return 0;
}
谁能给我一个解释?我倾向于认为,如果我在结构中使用unsigned,那么输出将是正数。但我不知道-3 来自哪里。
【问题讨论】:
-
为什么第二个成员没有名字?
-
@ryyker 填充。而且确实没有任何意义。
标签: c bit bit-fields