Sono appena arrivato a un progetto con una base di codice piuttosto enorme.
Mi occupo principalmente di C ++ e gran parte del codice che scrivono utilizza la doppia negazione per la loro logica booleana.
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
So che questi ragazzi sono programmatori intelligenti, è ovvio che non lo fanno per caso.
Non sono un esperto esperto di C ++, la mia unica ipotesi sul motivo per cui lo stanno facendo è che vogliano rendere assolutamente positivo che il valore valutato è la rappresentazione booleana effettiva. Quindi lo negano, quindi lo negano di nuovo per riportarlo al suo valore booleano effettivo.
È corretto o mi manca qualcosa?