私は簡単な質問があります。C++のIntビット操作は2UL = 10ULですか?
私はしばらくの間、C/C++でのビット操作で遊んでてきたと私は最近、私は定期的にunsigned int型に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
ああ、今私はそれを手に入れます。ありがとう! – Orujimaru
それでは、私が欲しいが、私はどうなるのか1,2,4,8,16など では1UL、2^1UL、2^2UL、2^3ULです。 しかし、私は期待どおりに動作しません。 512UL、1024ULなどよりも、これらの値を明確に定義する方法はありますか? – Orujimaru
@Orujimaru: '1UL << k'おそらく? – Fanael