domingo, 6 de novembro de 2016

Dicas de Programação: Para que serve o operador ^ em C/C++?

O operador ^ não representa exponencial no C/C++ e, sim, o operador binário XOR.

Agora vem a pergunta: Que diabos é a operação XOR?

XOR (exclusive OR) é uma operação binária que verifica se os valores dos bits são inversos um do outro, dando resultado 1 caso isso seja verdadeiro e 0, caso o contrário.

A melhor maneira de se entender é através da tabela verdade:

ABXOR
000
011
101
110

Então, se você precisa, em programação, que somente uma das condições seja verdadeira, é muito mais fácil usar esta operação, do que esta aqui:

(A && !B) || (!A && B)

Exemplo: O cadastro é válido, somente se a pessoa for do sexo feminino e ela não tem reservista ou se tem reservista e não for do sexo feminino:

if (pessoa.isFeminino() ^ pessoa.hasReservista()) {
...
}

Obs.: Vixe..., eu acho que mais compliquei que expliquei... Mas, com o tempo, a gente pega prática. ;)

Até mais!

Nenhum comentário: