Cod*_*rJL 31 c++ syntax bit-manipulation
enum
{
kFlag_FPS = 1 << 0,
kFlag_Help = 1 << 1,
kFlag_RedBlue3D = 1 << 2,
}
Run Code Online (Sandbox Code Playgroud)
我试图了解这段代码是什么我不太清楚:
1 << 0
Run Code Online (Sandbox Code Playgroud)
手段?
任何帮助是极大的赞赏!
Cae*_*sar 35
左移运算符使第一个操作数中的位模式向左移动第二个操作数指定的位数.通过换档操作腾出的位是零填充的.这是逻辑移位而不是移位和旋转操作.
这意味着用户正在获取比特值1并基于正确的数字将比特向左移位.
这意味着在这种情况下,它们的值将以二进制形式显示.
1 << 0 = `0000 0001`
1 << 1 = `0000 0010`
1 << 2 = `0000 0100`
Run Code Online (Sandbox Code Playgroud)
第一次转变不是必要的,但看起来与其他转变更为一致.
本来可以很简单
enum
{
kFlag_FPS = 1,
kFlag_Help = 1 << 1,
kFlag_RedBlue3D = 1 << 2,
}
Run Code Online (Sandbox Code Playgroud)
但编码员喜欢更多的对称性。