我有一个与C中的位字段有关的问题。这里有一个结构:
struct Register
{
int bit:1;
};
int main(void)
{
struct Register bit = {1};
printf("\nbit = %d", bit.bit);
return 0;
}
你能解释一下我为什么得到:
位= -1
答案 0 :(得分:6)
如果您正在使用位域,则应使用unsigned int
。 signed int
是位字段的问题。
答案 1 :(得分:1)
使用unsigned int,它存储0和1,
struct Register
{
unsigned int bit:1;
};
int main(void)
{
struct Register bit = {1};
printf("\nbit = %d", bit.bit);
return 0;
}