C++ 在c++;结构?

C++ 在c++;结构?,c++,C++,为什么使用:而不是=。我真的很困惑。这是位字段,用于指定结构成员恰好占用给定数量的位 在您的示例中,test.a为4位,test.b为5位,test.c为7位 例如,这对于类型转换非常有用。您可以使用short变量,该变量可以转换为test,并获得所需的精确位 阅读了解更多信息。它被称为位字段:它是位字段。在a:4的情况下,这意味着4位用于a,这意味着a只能存储较小的值,特别是0-15。优点是它很小。但具体如何存储位取决于编译器。@VoidStar这与联合有何不同?@Celeritas:在联合中

为什么使用
而不是
=
。我真的很困惑。

这是位字段,用于指定结构成员恰好占用给定数量的位

在您的示例中,
test.a
为4位,
test.b
为5位,
test.c
为7位

例如,这对于类型转换非常有用。您可以使用
short
变量,该变量可以转换为
test
,并获得所需的精确位


阅读了解更多信息。

它被称为位字段:它是位字段。在
a:4
的情况下,这意味着4位用于
a
,这意味着
a
只能存储较小的值,特别是
0-15
。优点是它很小。但具体如何存储位取决于编译器。@VoidStar这与联合有何不同?@Celeritas:在联合中,
a
b
、和
c
将重叠,为同一内存提供视图;例如,设置
a
也会设置
c
。在位字段中,
a
b
c
可作为单独的值使用。它们只是紧密地排列在一起。@VoidStar对,我看到它们非常不同,尽管位字段似乎真的没用,因为内存不是位可寻址的:充其量它是字节可寻址的。假设8位字节
a
b
仍然需要2个字节…
test
是变量名,而不是类型更正。非常感谢。
struct mybitfields
{
    unsigned short a : 4;
    unsigned short b : 5;
    unsigned short c : 7;
} test;