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