gpt4 book ai didi

c - 具有位字段的结构中的哪些位是哪些?

转载 作者:行者123 更新时间:2023-11-30 20:06:19 25 4
gpt4 key购买 nike

#include <string.h>
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>

typedef struct AA {
int a1:5;
int a2:2;
} AA;

int main() {
AA aa;
char cc[100];
strcpy(cc, "0123456789");
memcpy(&aa, cc, sizeof(AA));
printf("%d\n", aa.a1);
printf("%d\n", aa.a2);
return 0;
}

我的意思是我知道 sizeof(AA)sizeof(int) 等于 4 字节,并且在复制 "0123 后"aa 的二进制数是

00110011,00110010,00110001,00110000
3 2 1 0

但我不明白哪些位是 a1:5a2:2

最佳答案

位域的排列没有标准化。

根据您的结果,a1 包含 10000a2 包含 01。可能出现这种情况的一种情况是,如果 a1cc[0] 的最低 5 位,而 a2 是下一个最低的 2 位。

也就是说,cc[0]00110000,它被划分为 0 01 10000

如果您对值进行更多实验,您可以确定编译器使用的顺序。

关于c - 具有位字段的结构中的哪些位是哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25738990/

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