3

などを注文する一連のビットフラグがあり{none=0x00, puppies=0x01, kittens=0x02, cute=0x04, funny=0x08, scary=0x10}ます。

ユーザーが検索を行うときはいつでも、ユーザーが|=希望するフラグのそれぞれだけを表示します。たとえば、ユーザーがかわいい子猫が欲しい場合は、search |= cutesearch |= kittens.

それでも、検索操作を実行すると、そのアイテムのすべてのアイテムをループしてチェックすることで(flag & search) != 0、代わりにかわいい属性または子猫を持つアイテムが返されます。かわいい属性と子猫を返すようにこれを変更するにはどうすればよいですか?

4

3 に答える 3

4

式で無関係なフラグをマスクしました(flag & search)。ここで、要求されたすべてのフラグが存在することを確認する必要があります。だから、する代わりに、して(flag & search) != 0ください(flag & search) == search

于 2011-06-23T17:21:01.193 に答える
1

if((旗とかわいい) && (旗と子猫))

于 2011-06-23T17:21:11.413 に答える
1

ループして各フラグを 1 つずつチェックする代わりに、結合されたすべてのフラグに対して検索をチェックします。

((flag1 | flag2 | flag3) & search) == search
于 2011-06-23T17:22:27.140 に答える