有人可以告诉我在这里做什么吗:

Const uint32_t goodguys = 0x1 << 0


我假设它是c ++,并且正在将标签分配给组,但是我从未见过这样做。我是一个自学成才的目标C家伙,这对我来说似乎很陌生。

最佳答案

好吧,如果在您发布的那一行之后有更多类似的行,那么它们可能是bitmasks

例如,如果您具有以下条件:

const uint32_t bit_0 = 0x1 << 0;
const uint32_t bit_1 = 0x1 << 1;
const uint32_t bit_2 = 0x1 << 2;
...


那么您可以将按位&运算符与bit_0bit_1bit_2,...和另一个数字一起使用,以查看该另一个数字中的哪些位已打开。

const uint32_t num = 5;

...

bool bit_0_on = (num & bit_0) != 0;
bool bit_1_on = (num & bit_1) != 0;
bool bit_2_on = (num & bit_2) != 0;
...


因此,您的0x1只是将goodguys指定为位掩码的一种方式,因为十六进制的0x指示符表明代码的作者正在专门考虑位而不是十进制数字。然后<< 0用于精确地更改位掩码的掩码(只需将0更改为12等)。

关于tags - 这行代码做什么? const uint32_t goodguys = 0x1 << 0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18304564/

10-08 22:30