C ++垂直条?

时间:2014-01-10 20:42:45

标签: c++ operators operator-keyword

等号前的竖条是什么意思?如下面的代码所示:

 UINT createDeviceFlags = 0;
#ifdef _DEBUG
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif

2 个答案:

答案 0 :(得分:8)

createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;

是复合赋值运算符,实际上等同于

createDeviceFlags = createDeviceFlags | D3D11_CREATE_DEVICE_DEBUG;

其中operator |表示按位运算符OR。这是为了应用这两个操作数的所有位操作OR。它通常用于设置整数对象中的某些位或标志。

按位OR运算符的操作如下

0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1

所以这个语句设置变量createDeviceFlags的位,对应于标志D3D11_CREATE_DEVICE_DEBUG的设置位。这个标志是打开的。

答案 1 :(得分:5)

|运算符是bitwise OR operator

+-/*运算符一样,将|运算符放在等号之前是以下的简写版本:

createDeviceFlags = createDeviceFlags | D3D11_CREATE_DEVICE_DEBUG;