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 = 1 << 1,
kYellow = 1 << 2,
kBrown = 1 << 3,
};
typedef char ColorType;
I suppose to store multiple colors in one colorType I should OR the bits together?
ColorType pinkColor = kWhite | kRed;
But suppose I would want to check if pinkColor contains kRed, how would I do this?
Anyone care to give me an example using the provided ColorType example ?
Yes, use bitwise OR (
|) to set multiple flags:Then use bitwise AND (
&) to test if a flag is set:The result of
&has any bit set only if the same bit is set in both operands. Since the only bit inkRedis 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
BOOLrather than just testing it in anifcondition immediately, compare the result of the bitwise AND to the tested bit: