我在这里找到了这一行:
uint32 bIsHungry : 1;
Run Code Online (Sandbox Code Playgroud)
...我从未见过用于初始化变量的语法.
我习惯看到这个:
uint32 bIsHungry = 1;
Run Code Online (Sandbox Code Playgroud)
它看起来有点像初始化列表,但对于单个字段?
它是什么,它做了什么,我为什么要关心?
该行是一个位字段声明,它声明一个具有显式位级大小的数据成员
来自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
}
Run Code Online (Sandbox Code Playgroud)
请注意,在上面的示例中,无符号溢出是已定义的行为(如果b声明为有符号类型,则不适用)
您链接的文档也说明了这一点
布尔类型可以用C++ bool关键字表示,也可以用位域表示
关于我为什么要关心我建议阅读这个其他问题
| 归档时间: |
|
| 查看次数: |
2843 次 |
| 最近记录: |