【问题标题】:What does the vertical pipe ( | ) mean in C++?C++ 中的竖线 ( | ) 是什么意思?
【发布时间】:2012-04-27 04:34:06
【问题描述】:

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

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

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

【问题讨论】:

  • 这与windows编程无关;这是 C++ 的基本运算符。
  • 其实是C的运算符,C++采用它

标签: c++ pipe


【解决方案1】:

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

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

另见:

【讨论】:

  • 哇..?所有位都是真的?所以让我想想。 010101 | 101010 会返回 111111?
  • 是的。 b00010101 | b00101010 将返回 b00111111
【解决方案2】:

| 被称为bitwise OR operator

|| 称为逻辑或运算符。

【讨论】:

    【解决方案3】:

    这是一个按位或运算符。例如,

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

    将打印Woohoo!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-26
      • 2015-09-29
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 2013-03-09
      相关资源
      最近更新 更多