竖线 ( | ) 在C++中是什么意思

What does the vertical bar ( | ) mean in C++?

本文关键字:是什么 意思 C++ 竖线      更新时间:2023-10-16

我的一本编程书中有这样C++代码:

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

单管道在C++窗口编程中有什么作用?

位或运算符。它将设置在提供的两个值中的任何一个中为真的所有位 true。

例如,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 */
}

另请参阅:

  • 维基百科:按位运算(OR部分)
  • 维基百科:掩码(计算)部分(常用位掩码函数)

|称为按位OR运算符。

||称为逻辑 OR 运算符。

在 C++20 中,它也可以是范围适配器闭合对象的管道操作员。即将范围内的操作链接在一起。在这里阅读更多关于它的信息: https://en.cppreference.com/w/cpp/ranges#Range_adaptor_closure_objects

它是一个

按位 OR 运算符。例如

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

将打印Woohoo!