什么(1U << X)呢?

Kar*_*oor 21 c++

我找到了这段代码:

enum 
{
  IsDynamic = (1U << 0),  // ...
  IsSharable = (1U << 1), // ...
  IsStrong = (1U << 2)    // ...
};
Run Code Online (Sandbox Code Playgroud)

怎么(1U << X)办?

Phi*_*ert 38

它设置位掩码:

1U << 0 = 1
1U << 1 = 2
1U << 2 = 4
etc...
Run Code Online (Sandbox Code Playgroud)

发生的是1U(无符号值1)向左移位x位.

您发布的代码相当于:

enum 
{
      IsDynamic = 1U,  // binary: 00000000000000000000000000000001
      IsSharable = 2U, // binary: 00000000000000000000000000000010
      IsStrong = 4U    // binary: 00000000000000000000000000000100
}
Run Code Online (Sandbox Code Playgroud)


Ham*_*jan 5

位移.而不是说a = 1,b = 2,c = 4,它们移位.想法是将许多标志打包成一个整数(或长整数).

这实际上是一种非常干净的方法.