Я просто пришел в проект с довольно большой базой кода.Двойное отрицание в коде C++
В основном я имею дело с C++, и много кода, который они пишут, использует двойное отрицание для их логической логики.
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
Я знаю, что эти ребята - умные программисты, очевидно, что они не делают этого случайно.
Я не опытный эксперт на С ++, мое единственное предположение о том, почему они делают это, заключается в том, что они хотят сделать абсолютно положительным, что оцениваемое значение является фактическим булевым представлением. Поэтому они отрицают это, а затем отрицают это снова, чтобы вернуть его к фактической логической ценности.
Правильно ли это, или я что-то упускаю?
Эта тема обсуждалась [здесь] (http://stackoverflow.com/questions/206106/is-a-safe-way-to-convert-to-bool-in-c#206122). – Dima 2008-10-30 14:01:33
проверьте здесь, уже спросил, [Is !! безопасный способ конвертировать в bool в C++?] (http://stackoverflow.com/questions/206106/is-a-safe-way-to-convert-to-bool-in-c) – 2008-10-29 22:52:17
Возможный дубликат [Is !! безопасный способ конвертировать в bool на C++?] (https://stackoverflow.com/questions/206106/is-a-safe-way-to-convert-to-bool-in-c) – EdChum 2017-12-04 16:46:34