Подтвердить что ты не робот

Что означает операция "| =" в С++?

У меня есть следующий код, и я не понимаю, что это значит:

var1 |= var2>0 ? 1 : 2;

Любой может мне помочь!

4b9b3361

Ответ 1

if (var2 > 0)
  var1 = var1 | 1;
else 
  var1 = var1 | 2;

Побитовое или.

Ответ 2

Все операторы a op= b являются ярлыками для a = a op b.

Однако, поскольку С++ разрешает переопределять op и op=, вы полагаетесь на каждый из исполнителей пользовательских типов, чтобы быть последовательными.

Ответ 4

cond ? x : y возвращает x, если cond is true и y в противном случае. Прочитайте Тернарный оператор

a |= b является сокращением для a = a | b, который присваивает a | b a

a | b побитовое ИЛИ a и b. (например, 2 | 3 = 3 и 1 | 2 = 3)

Ответ 5

Как говорили другие, для v1 = v1 | v2; Другое использование, с которым вы можете столкнуться, - с булевыми. Учитывая:

bool b = /*some value*/

Вместо того, чтобы говорить:

if(a)
  b = true;

вы можете увидеть:

  b |= a;

Ответ 6

Целые числа могут быть представлены в двоичном формате, так что каждая цифра (бит, переключатель) равна 1 (вкл.) или 0 (выкл.):

00000000  ==  0
00000001  ==  1
00000010  ==  2
00000011  ==  3
00000100  ==  4
00001000  ==  8
00010000  ==  16

Побитовое ИЛИ объединяет два числа путем "слияния" двух наборов бит:

First number:     00110000
Second number:    00000010
Result:           00110010

Если бит равен 1 в EITHER номеров ввода, тогда в результате будет 1.

Сравнение с побитовым И, которое находит "перекрытие" двух наборов бит:

First number:     00110100
Second number:    10011110
Result:           00010100

Если бит равен 1 в BOTH входных чисел, тогда в результате будет 1.

Если числа находятся в переменных a и b, вы можете поместить побитовые результаты OR/AND в новую переменную c:

unsigned int c = a | b; // OR

unsigned int c = a & b; // AND

Часто результат должен быть помещен в одну из двух переменных, т.е.

unsigned int c = a | b; // OR
c = a; // copy

Итак, как сокращенное, вы можете сделать это за один шаг:

a |= b; // merge b directly into a

Ответ 7

Как упомянули другие люди, передо мной, это означает, что вы закончите присваивание поразным OR.

Побитовое ИЛИ можно проиллюстрировать, взяв левые и правые боковые диаграммы и поместив их поверх каждого другого.

В каждом столбце: 0 + 0 дает 0, 1 + 0 дает 1, 0 + 1 дает 1, 1 + 1 дает 1. В контексте логических: false ИЛИ false == false, true ИЛИ false == true, false ИЛИ true == true, true ИЛИ true == true.

Вот пример побитового ИЛИ и результирующего битового шаблона: var1 (11) | = var2 (14) → var1 (15)

    1011 (11)
OR  1110 (14)  
=   1111 (15)

Ответ 8

Оператор | = означает присваивание побитовым оператором OR