我有个简短的问题。
我在c/c++中玩了一段时间的位操作,最近发现当我将2UL和10UL与普通的无符号int进行比较时,它们似乎返回了相同的位。
例如,

#define JUMP 2UL
#define FALL 10UL

unsigned int flags = 0UL;
this->flags |= FALL;

//this returns true
this->is(JUMP);

bool Player::is(const unsigned long &isThis)
{
return ((this->flags & isThis) == isThis);
}

请确认2U是否等于10U,如果是,如果需要超过8(?)单个无符号整数中的标志。
谨致问候,
-马库斯

最佳答案

当然。10ul是1010二进制数,2是10。因此,执行x |= 10也会设置第二个位。
您可能想使用0x100x2作为标志。这些会如你所愿。
顺便说一下:十六进制表示法中的一个数字表示4位,而不是8位。

07-26 04:19