VirQ. Операции &=, |=, ^= и ! над булевыми переменными в C#
Язык C# входит в ТОП-5
самых популярных языков
программирования
Главная / Булевы переменные /
Операции &=, |=, ^= и ! над булевыми переменными
Статей на сайте: 61

Операции &=, |=, ^= и ! над булевыми переменными


Коротко в коде:
[code] //Логическое умножение. "И" a = a & b; a &= b; //Логическое сложение. "ИЛИ" a = a | b; a |= b; //Исключающее "ИЛИ" a = a ^ b; a ^= b; //Логическое отрицание a = !a; [/code]

Теперь подробнее.
Первые 3 случая записаны таким образом, что они равнозначны.
Поясню, выражение a &= b означает: проверить логическое умножение между операндами a и b; и результат перезаписать в переменную а.
Просто запись a = a & b гораздо удобнее записать, как a &= b

В данном случае под а и b имеются ввиду какие-то условия.
Например, пусть будет так:
a -> 2 * 3 > 7 (нет)
b -> 6 - 1 < 10 (да)

Во всех примерах надо не забывать, что значение "а" перезаписывается после &=, |=, ^=, !=

Оператор &=

Проверяем, имеют ли "true" оба значения от знака &=
[code] bool a = 2 * 3 > 7; bool b = 6 - 1 < 10; a &= b; //false //потому что false & true = false [/code]

Оператор |=

Проверяем, имеет ли "true" хотя бы одна из переменных
[code] bool a = 2 * 3 > 7; bool b = 6 - 1 < 10; a |= b; //true //потому что false | true = true [/code]

Оператор ^=

Проверяем, имеют ли две переменных разные значения.
В данном случае
a = false
b = true
Поэтому
[code] a = a ^ b; //true //или же такая запись a ^= b; //true [/code]
Вот ещё пример:
[code] bool a = 5 * 5 == 25; //true bool b = 10 / 2 == 5; //true a ^= b; //false [/code]
a ^= b даст false, потому что a и b имеют одинаковое значение

Оператор !

Это унарный оператор, поэтому работает он с 1 операндом:
[code] a = false; a = !a; //Теперь a = true a = !a; //При повторном выполнении опять будет false [/code]
В итоге, это инвертирование переменной типа bool

Дополнительная информация о том, как вывести результат в консоли или WinForm