I have an enum declaration using bit flags and I cant exactly figure out on how to use this.
enum
{
kWhite = 0,
kBlue = 1 << 0,
kRed =
Yes, use bitwise OR (|
) to set multiple flags:
ColorType pinkColor = kWhite | kRed;
Then use bitwise AND (&
) to test if a flag is set:
if ( pinkColor & kRed )
{
// do something
}
The result of &
has any bit set only if the same bit is set in both operands. Since the only bit in kRed
is bit 1, the result will be 0 if the other operand doesn't have this bit set too.
If you need to get whether a particular flag is set as a BOOL
rather than just testing it in an if
condition immediately, compare the result of the bitwise AND to the tested bit:
BOOL hasRed = ((pinkColor & kRed) == kRed);