Что означает вертикальная труба (|) в C ++?

У меня есть код C ++ в одной из моих книг по программированию:

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

Что делает единственный канал в программировании Windows 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. Например,

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

будет печатать Woohoo! ,

  • Проблемы с fork (), pipe (), dup2 () и exec () в C
  • Может ли popen () создавать двунаправленные трубы, например pipe () + fork ()?
  • Давайте будем гением компьютера.