在下面的代码中,我得到A = -1作为输出。我想,这是因为我溢出了3位的A成员。 我在这方面有两个问题:
我期待A的值为7,但我显然误解了一些东西。请帮忙。
#include <stdio.h>
typedef struct
{
char A: 3;
char B: 3;
char C: 3;
}my_struct;
my_struct new_object = {0};
void main(void)
{
new_object. A = 63;
printf("A = %d\n", new_object.A);
printf("B = %d\n", new_object.B);
}
答案 0 :(得分:3)
我期待A的值为7
行。 7是二进制的111。但是你有一个签名的字符(显然,因为你告诉我们它出现了-1)。所以你需要这样做:
typedef struct
{
unsigned char A: 3;
unsigned char B: 3;
unsigned char C: 3;
}my_struct;