0

具有以下代码 -

    enum FileOpenFlags {
    flagREAD = 1, flagWRITE = 2,
    flagCREATE = 4, flagEND = 8,
    flagAPPEND = flagWRITE | flagEND,
    };
    cout << flagAPPEND << endl;

10. 你能解释一下做了什么|吗?

4

4 回答 4

5

它对这两个值进行了按位计算。or

于 2012-08-28T18:14:27.573 回答
4

flagWRITE的 (2) 二进制表示为 0010

flagEND的 (8) 二进制表示为 1000

0010 OR 1000 给你 1010 等于 10

于 2012-08-28T18:15:26.730 回答
2

它被称为按位或......

于 2012-08-28T18:15:25.937 回答
2

这是一个按位“或”运算符。所以 2 和 8 的位值分别按位进行或运算。

所以:

   1000 (flagEND = 8) 
OR 0010 (flagWRITE = 2)
-----------
 = 1010 (flagAppend = 10)
于 2012-08-28T18:18:06.320 回答