Что означает вертикальная полоса перед знаком равенства? Как и в приведенном ниже коде:C++ вертикальная панель?
UINT createDeviceFlags = 0;
#ifdef _DEBUG
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
Что означает вертикальная полоса перед знаком равенства? Как и в приведенном ниже коде:C++ вертикальная панель?
UINT createDeviceFlags = 0;
#ifdef _DEBUG
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
Это
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
является назначением соединения и фактически эквивалентен
createDeviceFlags = createDeviceFlags | D3D11_CREATE_DEVICE_DEBUG;
где оператор | означает побитовый оператор OR. То есть для всех битов этих двух операндов применяется операция OR. Обычно он используется для установки некоторых битов или флагов в интегральном объекте.
Действия побитового ИЛИ оператор следующих
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
Так что это оператор устанавливает на битах переменной createDeviceFlags, что соответствует набору битого флага D3D11_CREATE_DEVICE_DEBUG То есть этот флаг включен.
Оператор |
является bitwise OR operator.
Как с +
, -
, /
и *
операторами, помещая оператор |
перед знаком равенства является сокращенной версией:
createDeviceFlags = createDeviceFlags | D3D11_CREATE_DEVICE_DEBUG;
Кажется, что некоторые люди на SO downvote отвечают на вопросы, на которые, по их мнению, никогда не должны отвечать (независимо от того, доступен ли ответ). – PlasmaHH
Я думаю, что некоторые люди (а не я) занижены, потому что вы не объяснили, что делает оператор | имею в виду. –
@ VladfromMoscow: Вы, вероятно, правы. Наверное, я был доволен вопросом о том, что он должен был поставить перед знаком равенства. Я обновил свой ответ. –