Что означает «| =» операция в C ++?
-
27-09-2019 - |
Вопрос
У меня есть следующий код, и я не могу понять, что это значит:
var1 |= var2>0 ? 1 : 2;
Любой может помочь мне, пожалуйста!
Решение
if (var2 > 0)
var1 = var1 | 1;
else
var1 = var1 | 2;
Это побито-или.
Другие советы
Все a op= b
Операторы - это ярлык для a = a op b
.
Однако, так как C ++ позволяет op
и op=
Чтобы переопределить отдельно, вы полагаетесь на каждого исполнителя пользовательских типов, чтобы быть последовательным.
cond ? x : y
возвращается x
Если кондицион верно и y
в противном случае. Читать Темнарный оператор
a |= b
Снаряжена a = a | b
который назначает a | b
к a
a | b
является побито или из a
и b
. Отказ (например, 2 | 3 = 3 и 1 | 2 = 3)
Как другие сказали, что это коротко для v1 = v1 | v2;
Другое использование, которое вы можете столкнуться с логическими.
Дано:
bool b = /*some value*/
Вместо того, чтобы сказать:
if(a)
b = true;
Вы можете увидеть:
b |= a;
Целые числа могут быть представлены в двоичном режиме, так что каждая цифра (бит, переключатель) - 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 в любом из входных номеров, то он будет 1 в результате.
Сравните с побитовыми и, которые находят «перекрытие» двух наборов битов:
First number: 00110100
Second number: 10011110
Result: 00010100
Если немного 1 в обоих входных номерах, то он будет 1 в результате.
Если номера в переменных A и B, вы можете разместить побитовые или / и привести в новую переменную 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
Как другие люди, прежде чем мне упомянули, это означает, что вы получите заданиями побитовыми или.
Побил или может быть проиллюстрирован, принимая левую руку и правую боковую биты и положить их поверх друг друга.
В каждом столбце: 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) или 1110 (14) = 1111 (15)
Оператор | = означает назначение побитовой или оператору