У меня быстрый вопрос.
Я какое-то время играл с битовыми манипуляциями в c / c ++ и недавно обнаружил, что когда я сравниваю 2UL и 10UL с обычным целым без знака, они, похоже, возвращают один и тот же бит.
Например,
#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 (?) Флагов в одном целом без знака.
С уважением,
-Markus