Я только что пришел в проект с довольно большой кодовой базой.
Я в основном имею дело с C ++, и большая часть кода, который они пишут, использует двойное отрицание для своей логической логики.
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
Я знаю, что эти ребята умные программисты, очевидно, что они делают это не случайно.
Я не опытный эксперт по C ++, я только догадываюсь, почему они это делают, так это то, что они хотят сделать абсолютно уверенным, что оцениваемое значение является фактическим логическим представлением. Таким образом, они отрицают это, а затем снова отрицают, чтобы вернуть его фактическое логическое значение.
Это правильно, или я что-то упускаю?