Właśnie przyszedłem do projektu z dość dużą bazą kodu.
Zajmuję się głównie C ++ i wiele z ich kodu używa podwójnej negacji dla logiki boolowskiej.
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
Wiem, że ci faceci to inteligentni programiści, oczywiste jest, że nie robią tego przez przypadek.
Nie jestem doświadczonym ekspertem od C ++, moje jedyne przypuszczenie, dlaczego to robią, to to, że chcą mieć absolutną pewność, że oceniana wartość jest rzeczywistą reprezentacją boolowską. Więc negują to, a następnie ponownie negują, aby przywrócić mu rzeczywistą wartość logiczną.
Czy to prawda, czy czegoś mi brakuje?