Ich bin gerade auf ein Projekt mit einer ziemlich großen Codebasis gestoßen.
Ich beschäftige mich hauptsächlich mit C ++ und ein Großteil des Codes, den sie schreiben, verwendet doppelte Negation für ihre boolesche Logik.
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
Ich weiß, dass diese Leute intelligente Programmierer sind. Es ist offensichtlich, dass sie dies nicht zufällig tun.
Ich bin kein erfahrener C ++ - Experte. Meine einzige Vermutung, warum sie dies tun, ist, dass sie absolut sicher stellen möchten, dass der zu bewertende Wert die tatsächliche boolesche Darstellung ist. Also negieren sie es und negieren es dann erneut, um es wieder auf seinen tatsächlichen booleschen Wert zu bringen.
Ist das richtig oder fehlt mir etwas?