gpt4 book ai didi

c - 如何计算包含一些未命名成员和零大小位域的位域结构的大小?

转载 作者:行者123 更新时间:2023-12-04 15:09:05 24 4
gpt4 key购买 nike

如何计算此结构的大小:

struct B {
unsigned char c1 : 1;
unsigned char : 2;
unsigned char c2 : 2;
unsigned char : 0;
unsigned char c3 : 4;
unsigned char c4 : 1;
};

这里的0代表什么意思,是不是占用0位(即没有内存)

有人可以向我解释一下它的大小是如何计算的吗?

最佳答案

大小为 0 的位字段用于指定任何后续位字段将放置在单独的字节/单元中。因此结构的布局可能如下所示:

| c1|       |   c2  |           |      c3       | c4|           |
-----------------------------------------------------------------
| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15|
-----------------------------------------------------------------

如果没有大小为 0 的字段,它可能看起来像这样:

| c1|       |   c2  |      c3       | c4|                       |
-----------------------------------------------------------------
| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15|
-----------------------------------------------------------------

但是请注意,结构中位字段的顺序是实现定义的,因此它可能看起来并不完全像这样。

关于c - 如何计算包含一些未命名成员和零大小位域的位域结构的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65539874/

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