我找到了这一行here:
uint32 bIsHungry : 1;
...我从未见过用于初始化变量的语法。
我习惯看到这个:
uint32 bIsHungry = 1;
它看起来有点像初始化列表,但对于单个字段?
它是什么,它做了什么,我为什么要关心?
答案 0 :(得分:8)
该行是bit field declaration,它声明了一个具有显式位级大小的数据成员
来自cppreference的示例:
#include <iostream>
struct S {
// three-bit unsigned field,
// allowed values are 0...7
unsigned int b : 3;
};
int main()
{
S s = {7};
++s.b; // unsigned overflow
std::cout << s.b << '\n'; // output: 0
}
请注意,在上面的示例中,无符号溢出为defined behavior(如果b
被声明为签名类型,则不适用
您链接的文档也说明了
布尔类型可以用C ++ bool关键字表示,也可以用位域
表示
关于我为什么要关心我建议阅读this other question
答案 1 :(得分:1)
这是位域声明,声明一个具有显式大小的类数据成员,以位为单位。
答案 2 :(得分:1)
它不是初始化,它是声明的片段。
struct {
// ...
uint32 bIsHungry : 1;
// ...
};
将bIsHungry
声明为struct
的位域成员。它说bIsHungry
是unsigned int
,其长度为1
位。其可能的值为0
和1
。
了解有关位域的更多信息:http://en.cppreference.com/w/c/language/bit_field