C ++ - 什么是管道(|)字符?

时间:2014-08-04 11:14:54

标签: c++

我有一些代码:

#include "Communicate.h"

Communicate::Communicate(const wxString& title)
       : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(290, 150))
{
  m_parent = new wxPanel(this, wxID_ANY);

  wxBoxSizer *hbox = new wxBoxSizer(wxHORIZONTAL);

  m_lp = new LeftPanel(m_parent);
  m_rp = new RightPanel(m_parent);

  hbox->Add(m_lp, 1, wxEXPAND | wxALL, 5);
  hbox->Add(m_rp, 1, wxEXPAND | wxALL, 5);

  m_parent->SetSizer(hbox);

  this->Centre();
}
本教程中的

http://zetcode.com/gui/wxwidgets/ - 首批应用

什么是运营商|意味着:

hbox->Add(m_lp, 1, wxEXPAND | wxALL, 5);
hbox->Add(m_rp, 1, wxEXPAND | wxALL, 5);

1 个答案:

答案 0 :(得分:6)

|是一个按位OR。

库通常定义不同的掩码,例如wxEXPANDwxALL,它们通常是整数常量,只设置一个位。

当你使用bitwise-or运算符时,你可以将它们结合起来创建所谓的位域,这是一个带有你定义的位的整数集。

你将这些结合起来:

wxEXPAND | wxALL

将创建一个位域,其中包含来自wxEXPAND和wxALL的位。

通常,库会检查这些位是否设置如下:

if (bitfield & wxEXPAND) { .. // wxEXPAND is set

这是一个按位AND。当且仅当在wxEXPAND中设置了bitfield位时,测试才会返回。

库使用它来允许您在单个寄存器中传递多个选项,例如。