具有以下代码 -
enum FileOpenFlags {
flagREAD = 1, flagWRITE = 2,
flagCREATE = 4, flagEND = 8,
flagAPPEND = flagWRITE | flagEND,
};
cout << flagAPPEND << endl;
给10
. 你能解释一下做了什么|
吗?
具有以下代码 -
enum FileOpenFlags {
flagREAD = 1, flagWRITE = 2,
flagCREATE = 4, flagEND = 8,
flagAPPEND = flagWRITE | flagEND,
};
cout << flagAPPEND << endl;
给10
. 你能解释一下做了什么|
吗?
它对这两个值进行了按位计算。or
flagWRITE
的 (2) 二进制表示为 0010
flagEND
的 (8) 二进制表示为 1000
0010 OR 1000 给你 1010 等于 10
它被称为按位或......
这是一个按位“或”运算符。所以 2 和 8 的位值分别按位进行或运算。
所以:
1000 (flagEND = 8)
OR 0010 (flagWRITE = 2)
-----------
= 1010 (flagAppend = 10)