C++ vertical bar?
C++ vertical bar?
等号前的竖线是什么意思?就像下面的代码一样:
UINT createDeviceFlags = 0;
#ifdef _DEBUG
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
是复合赋值运算符,实际上等效于
createDeviceFlags = createDeviceFlags | D3D11_CREATE_DEVICE_DEBUG;
其中运算符 | 表示按位运算符 OR。即对这两个操作数的所有位应用 OR 运算。它通常用于设置整体对象中的某些位或标志。
按位 OR 运算符的操作如下
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
因此,此语句设置变量 createDeviceFlags 的位,对应于设置标志位 D3D11_CREATE_DEVICE_DEBUG 也就是说,此标志已打开。
|
运算符是按位 OR 运算符。
与+
、-
、/
和*
运算符一样,将|
运算符放在等号之前是以下的简写版本:
createDeviceFlags = createDeviceFlags | D3D11_CREATE_DEVICE_DEBUG;
相关文章:
- ld: foo.o:foo.h:6 'bar' 的多重定义 foo.h:6: 首先在这里定义
- C++ "var foo = !!::bar()"语法?
- 诸如class bar *bar之类的指针的名称是什么?
- 无法将样式添加到QT Tab小部件中的选项卡(bar)和Tab(窗格)
- What does int foo = bar << ' '; mean in c++?
- 桌带(Explorer Bar)视觉样式
- Win32 API C++ Menu bar
- C++ vertical bar?
- 在"bar::foo"的定义中使用"foo"
- 为什么 foo(short int *) 和 bar(signed short *) 认为 QT 的签名不同
- 为什么我需要双括号在构造函数调用中,如:foo x((bar());
- g++ 拒绝,clang++ 接受: foo(x)( "bar" )( "baz" );
- 错误:类型为"bar&"的参数的默认参数<int>具有类型"bar<int>"
- 在 C++11 中使用 auto foo = "bar" vs std::string
- 为什么"Foo f(Bar());"可以是采用 Bar 类型并返回类型 Foo 的函数的声明?
- 将 'bar 类型的向量复制到 BYTE 类型的向量
- Blackberry 10正在安装.bar文件
- What is an `int foo::*bar::*`?
- 如何设置QSqlQueryModel的Qt::Vertical headerData在进行分页时增加数字
- 未解析的外部符号"public: class Foo __thiscall Bar::bu(char const *)"