Acabei de entrar em um projeto com uma enorme base de código.
Estou lidando principalmente com C ++ e grande parte do código que eles escrevem usa negação dupla para sua lógica booleana.
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
Eu sei que esses caras são programadores inteligentes, é óbvio que não estão fazendo isso por acidente.
Não sou especialista em C ++ experiente, meu único palpite sobre o motivo pelo qual eles estão fazendo isso é que eles querem ter certeza absoluta de que o valor que está sendo avaliado é a representação booleana real. Então, eles negam e depois negam isso novamente para retornar ao seu valor booleano real.
Isso está correto ou estou faltando alguma coisa?