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