2012-04-15 9 views
7

私は私のプログラミングの本の一つで、このC++のコードを持っている:C++で垂直パイプ(|)の意味は何ですか?

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

1本のパイプがC++のWindowsプログラミングで何をしますか?

+4

これは、Windowsプログラミングとは関係ありません。これはC++の基本的な演算子です。 –

+0

ああ。私はWNDCLASSEXを定義するときにWindowsプログラミングの文脈でそれを遭遇しました。私はそれらの行を含めるために私の質問を編集しました。 – quakkels

+1

実際にはCの演算子であり、C++はそれを – EdChum

答えて

21

ビット単位の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 */ 
} 

も参照してください:

+0

とします。すべてのビットは本当ですか?だから私は考えさせてください。 010101 | 101010は111111を返しますか? – quakkels

+0

私はブール値を超えてビット指向のものについてはまだ学んでいます。 – quakkels

+2

はい。 'b00010101 | b00101010'は 'b00111111'を返します。 – Zeta

4

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

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

は、Woohoo!と表示されます。

関連する問題