Коротко в коде:
[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