在C++中,竖线(|)表示按位或运算符。

23
我在我的编程书中有这段C++代码:
WNDCLASSEX wndClass = { 0 };
wndClass.cbSize = sizeof(WNDCLASSEX);
wndClass.style =  CS_HREDRAW | CS_VREDRAW;

在C++的Windows编程中,单管道符号有什么作用?

8
这与Windows编程无关,这是C++的基本运算符。 - Nicol Bolas
4
实际上,这是C语言的一个运算符,C++也采用了它。 - EdChum
4个回答

35

按位或运算符。 如果在提供的两个值中任一个值为真,则它将设置所有位均为真。

例如,CS_HREDRAW 可以是1,而CS_VREDRAW 可以是2。 然后,可以使用按位与运算符&非常简单地检查它们是否已设置:

#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 */
}

另请参阅:


2
啥?所有位都是真的?让我想想。010101 | 101010 会返回 111111 吗? - quakkels
6
是的。b00010101 | b00101010 将返回 b00111111 - Zeta

11

10

https://github.com/ReactiveX/RxCpp 请查看此链接 - Yomi1984

6

这是一个位或(OR)运算符。例如,

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

将打印Woohoo!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接