使用位字段获取负值
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 int
。 signed 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;
}
我有一个关于C中位域的问题。我这里有这样一个结构:
struct Register
{
int bit:1;
};
int main(void)
{
struct Register bit = {1};
printf("\nbit = %d", bit.bit);
return 0;
}
你能解释一下为什么我得到:
bit = -1
如果您正在使用位域,您应该使用 unsigned int
。 signed 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;
}