使用位字段获取负值

Getting negative value with bit-fields

我有一个关于C中位域的问题。我这里有这样一个结构:

struct Register
{
  int bit:1;
};

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

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

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

bit = -1

如果您正在使用位域,您应该使用 unsigned intsigned int 是位域的问题。

使用 unsigned int ,它存储 0 和 1,

struct Register
{
unsigned int bit:1;
};

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

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