Понадобилось использовать оператор logical XOR и... поначалу не нашел я его в С++. В смысле не нашел оператора, на котором написано "logical XOR". А вообще оператор есть: !=.
Только логические выражения в которых написано наподобие a != b, где a и b логические переменные, выглядят непонятно. :-( Я поэтому стараюсь избегать его использования.
White Knight: да слишком уж она громоздка, читать неудобно и писать тоже. Вполне себе вариант когда на месте a и b - вызовы функций символов на 20-30 кода, да или просто имена переменных символов 10-20.
"The bitwise exclusive OR operator (^) compares each bit of its first operand to the corresponding bit of its second operand. If one bit is 0 and the other bit is 1, the corresponding result bit is set to 1. Otherwise, the corresponding result bit is set to 0."
10 комментариев:
Только логические выражения в которых написано наподобие a != b, где a и b логические переменные, выглядят непонятно. :-(
Я поэтому стараюсь избегать его использования.
А чем плоха конструкция:
!(a && b) && (a || b)
?
White Knight: да слишком уж она громоздка, читать неудобно и писать тоже. Вполне себе вариант когда на месте a и b - вызовы функций символов на 20-30 кода, да или просто имена переменных символов 10-20.
Тогда уж лучше
a ? !b : b
и то короче и нагляднее.
Bitwise Exclusive OR Operator: ^
"The bitwise exclusive OR operator (^) compares each bit of its first operand to the corresponding bit of its second operand. If one bit is 0 and the other bit is 1, the corresponding result bit is set to 1. Otherwise, the corresponding result bit is set to 0."
...
"The xor operator is the text equivalent of ^. "
MSDN
не совсем верно, извините.
у нее таблица истинности будет неправильная.
если
a = 8;
b = 4,
то
(a != b) будет равно 1,
а например (a ? !b : b) будет 0.
впрочем, если операнды - булевые переменные, то тогда конечно будет работать. но для булевых операндов будет работать и побитовый XOR.
int xor(int a, int b) {
return !a != !b;
}
Увидел здесь.
Ну что же вы?
Напишите ассемблерную inline вставку )))
Напишите ассемблерную вставку и всё, чтобы споров не было ;)
Отправить комментарий