20

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

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

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

4

3 に答える 3

32

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

たとえば、CS_HREDRAW1CS_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 */
}

以下も参照してください。

于 2012-04-15T16:58:21.577 に答える
9

|はビットごとのOR 演算子と呼ばれます。

||を論理 OR 演算子と呼びます。

于 2012-04-15T16:57:53.720 に答える
4

これはビットごとの OR 演算子です。例えば、

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

印刷されますWoohoo!

于 2012-04-15T16:58:48.627 に答える