使用位字段获得负值

时间:2015-06-03 08:09:45

标签: c struct bit-fields

我有一个与C中的位字段有关的问题。这里有一个结构:

struct Register
{
  int bit:1;
};

int main(void)
{
  struct Register bit = {1};

  printf("\nbit = %d", bit.bit);
  return 0;
}

你能解释一下我为什么得到:

  

位= -1

2 个答案:

答案 0 :(得分:6)

如果您正在使用位域,则应使用unsigned intsigned 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;
}