web-dev-qa-db-ja.com

C ++での垂直パイプ(|)はどういう意味ですか?

私のプログラミング本の1つにこのC++コードがあります。

WNDCLASSEX wndClass = { 0 };
wndClass.cbSize = sizeof(WNDCLASSEX);
wndClass.style =  CS_HREDRAW | CS_VREDRAW;

シングルパイプはC++ Windowsプログラミングで何をしますか?

12
quakkels

ビット単位OR演算子。指定された両方の値のいずれかで真であるすべてのビットを真に設定します。

たとえば、CS_HREDRAWを1、CS_VREDRAWを2にすることができます。ビット単位のAND演算子&を使用して、それらが設定されているかどうかを確認するのは非常に簡単です。

#define CS_HREDRAW 1
#define CS_VREDRAW 2
#define CS_ANOTHERSTYLE 4

unsigned int style = CS_HREDRAW | CS_VREDRAW;
if(style & CS_HREDRAW){
    /* CS_HREDRAW set */
}

if(style & CS_VREDRAW){
    /* CS_VREDRAW set */
}

if(style & CS_ANOTHERSTYLE){
    /* CS_ANOTHERSTYLE set */
}

参照:

24
Zeta

|ビット単位OR演算子 と呼ばれます。

||は論理OR演算子と呼ばれます。

9
Nawaz

これはビット単位のOR演算子です。たとえば、

if( 1 | 2 == 3) {
    std::cout << "Woohoo!" << std::endl;
}

Woohoo!を出力します。

4