1. ホーム
  2. c++

[解決済み] C++における二重否定

2022-06-11 01:07:05

質問

私はちょうど、かなり巨大なコードベースを持つプロジェクトに参加したところです。

私は主に C++ を扱っており、彼らが書くコードの多くは、ブーリアンロジックに二重否定を使用しています。

 if (!!variable && (!!api.lookup("some-string"))) {
       do_some_stuff();
 }                                   

こいつらが知能の高いプログラマーであることは知っている、偶然にやっているのではないことは明らかだ。

私は経験豊富な C++ の専門家ではありませんが、なぜこのようなことをしているのかを推測すると、評価される値が実際のブール表現であることを絶対に確認したいのでしょう。そのため、それを否定し、実際のブール値に戻すためにもう一度否定しています。

これは正しいのでしょうか、それとも何か見逃しているのでしょうか?

どのように解決するのですか?

boolに変換するのがコツです。