Учтите это:
if(an odd number of conditions are true) then return 1 else return 0
Используя и / или / нет, вы можете попробовать
if(one is true || three are true || ... 2n+1 are true) then return 1 else return 0
Это довольно уродливо, потому что вам приходится указывать каждый из 1-наборов, 3-наборов, 5-наборов, ..., 2n + 1 наборов, которые являются подмножествами набора ваших условий. Версия XOR довольно элегантна, хотя ...
if(C1 XOR C2 XOR ... XOR CN) then return 1 else return 0
Для большого или переменной N это, вероятно, лучше всего обрабатывать с помощью системы циклов и счетчиков, но когда N не слишком велико (~ 10), и вы еще не сохраняете условия в виде массива, это не так уж и плохо Работает так же для проверки четного числа условий.
Вы можете придумать похожие примеры и для других. Интересным упражнением будет попытка программирования что-то вроде
if((A && !B) || (!A && B)) then return 1 else return 0
И посмотрите, генерирует ли компилятор язык ассемблера для AND, OR и NOT или достаточно умен, чтобы признать, что это XOR, и, основываясь на этом, испускает (возможно, более дешевую) инструкцию XOR.