【发布时间】:2021-02-25 22:33:36
【问题描述】:
位域的整数类型重要吗,或者说它基本上是一次性的,例如:
struct font {
int bold : 1;
int italics : 2;
int underline : 1;
};
对比
struct font {
unsigned int bold : 1;
unsigned int italics : 2;
unsigned int underline : 1;
};
对比
struct font {
char bold : 1;
char italics : 2;
char underline : 1;
};
不同的整数类型在这里“做”什么,或者它基本上是一个占位符?
【问题讨论】:
-
好吧,
int bold : 1;只能是-1或0,而unsigned int bold : 1;可以是1或0。 -
@KamilCuk 当我使用 int 字段时,如果我设置
bold=1,编译器不会抱怨,但如果我设置bold=2,它会抱怨。 -
当您执行
char a = 1000;时,编译器也不会报错,但char可以(通常;)只能将-128保持到127... 该值已转换到目标类型的范围。
标签: c bit-fields