C: XNOR / Эксклюзивный - Ни логический элемент?

Я пытаюсь найти самый эффективный способ записать логический элемент XNOR в C.

if(VAL1 XNOR VAL2)
{
    BLOCK;
}

Какие-либо предложения?

Спасибо.

10
задан user359531 6 June 2010 в 08:01
поделиться

3 ответа

if(!(val1^val2))
{
    block;
}

edit: вне логических операций, вы вероятно захотите ~(val1^val2), чтобы быть точным, но я нахожу ! более понятным.

7
ответ дан 3 December 2019 в 15:05
поделиться

Предполагая, что val1 и val2 будут рассматриваться в обычной логической булевой манере языка Си (ненулевое значение истинно), тогда:

if (!val1 ^ !!val2)
{

}

подойдет.

0
ответ дан 3 December 2019 в 15:05
поделиться

С двумя операндами это довольно просто:

if (val1 == val2)
{
    block;
}
23
ответ дан 3 December 2019 в 15:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: