Having the follow code -
enum FileOpenFlags {
flagREAD = 1, flagWRITE = 2,
flagCREATE = 4, flagEND = 8,
flagAPPEND = flagWRITE | flagEND,
};
cout << flagAPPEND << endl;
gives 10
. can you explain me what the |
did ?
Having the follow code -
enum FileOpenFlags {
flagREAD = 1, flagWRITE = 2,
flagCREATE = 4, flagEND = 8,
flagAPPEND = flagWRITE | flagEND,
};
cout << flagAPPEND << endl;
gives 10
. can you explain me what the |
did ?
flagWRITE
's (2) binary representation is 0010
flagEND
's (8) binary representation is 1000
0010 OR 1000 gives you 1010 which equals 10
It's a bitwise "OR" operator. So the bit value of 2 and 8 respectively get OR'd bitwise.
So:
1000 (flagEND = 8)
OR 0010 (flagWRITE = 2)
-----------
= 1010 (flagAppend = 10)