C: XNOR/Exclusive-Nor ворота?

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

if(VAL1 XNOR VAL2)
{
    BLOCK;
}

Любые предложения?

Спасибо.

Ответ 1

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

if (val1 == val2)
{
    block;
}

Ответ 2

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

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

Ответ 3

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

if (!val1 ^ !!val2)
{

}

сделает трюк.