gpt4 book ai didi

c - 读取位域元素时在 C 中给出不同的值

转载 作者:行者123 更新时间:2023-11-30 14:47:09 24 4
gpt4 key购买 nike

尝试写入位字段并读回时我的小片段给出了不同的值

#include <stdio.h>
typedef struct
{
int a:1;
int b:1;
int c:1;
int d:5;
}node_t;

int main()
{
node_t var;
var.a = 1;
var.b = 0;
int a = var.a;
int b = var.b;
printf(" %d", a);
printf(" %d", b);
return 0;
}

这给出了输出:

 -1 0

我的位域 var.a 如何变为 -1 而不是 1?

最佳答案

您应该知道 int 默认情况下是有签名的。因此,当您为整数值设置一位时,您将将该变量的符号位设置为1。因此它将是一个负值。为此,这将是二进制补码技术。

关于c - 读取位域元素时在 C 中给出不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51569918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com