J'essaie de trouver le moyen le plus efficace d'écrire une porte Xnor dans C.
if(VAL1 XNOR VAL2) { BLOCK; }
3 Réponses :
if(!(val1^val2)) { block; } edit: outside of logical operations, you'd probably want ~(val1^val2) to be exact, but i find the ! clearer.
présumer val1 code> et
VAL2 code> doit être traité à la mode booléenne logique normale C (non nulle est vrai), puis:
if (!val1 ^ !!val2)
{
}
avec deux opérandes c'est tout à fait simple:
Cela devrait être la réponse acceptée. Parfois, nous avons tendance à détourner les choses les plus évidentes!
Cette réponse est incorrecte car elle suppose que les deux valeurs sont égales. Et si elles sont à la fois des valeurs non nulles mais différentes?