Использование XOR в C с объявлением bool - PullRequest
0 голосов
/ 28 февраля 2020

У меня проблема с XOR. Вот пример. У меня есть это: bool a [4] = [1,0,0,1] и bool b [4] = [0,1,0,1]. Я хочу создать XOR и написать в boll xor [4]. Я пытаюсь это, но это не работает. Вы можете помочь мне с этим?

bool xor[4];
   for(int i=0;i<4;i++){
     if((a[i]==0) && (b[i]==0)){
       xor[i]=0;
     }
     else if((a[i]==1) && (b[i]==1)){
       xor[i]=0;
     }
     else if((a[i]==1) && (b[i]==0)){
       xor[i]=1;
     }
     else if((a[i]==0) && (b[i]==1)){
       xor[i]=1;
     }
   }

1 Ответ

0 голосов
/ 28 февраля 2020

Может быть, что-то более простое.

int xor(int a, int b)
{
    return (!!a) ^ (!!b);
}

Я использую двоичный XOR. Но чтобы удостовериться, что переданные значения равны 0 или 1, я дважды логически отрицаю параметры.

Или как Eugene Sh. упомянуто

bool xor(int a, int b)
{
    return (!!a) != (!!b);
}

// OR if you want to use xor binary operator

bool xor(int a, int b)
{
    return !!((!!a) ^ (!!b))
}

https://godbolt.org/z/NoCPbu

...