8

重複の可能性:
C++ コードでの二重否定

私の知る限り、C/C++ の書籍のチュートリアルやマニュアルでこの手法について言及されているものはありません。たぶん、それはほんの些細なことで、言及する価値がないからです。

C/C++ では bool 型と int、long、pointer、double などを混在させるため、これを使用します。非ブール値をブール値に変換する必要があることは非常に一般的です。それを行うために (bool)value を使用するのは安全ではないので、私はそれを使用!!します。

例:

bool bValue = !!otherValue;
4

3 に答える 3

19

それは問題ありません。CまたはC++プログラマーなら誰でもそれを認識できるはずですが、私はもっと明確なものを好みます。

(x != 0)
于 2012-05-02T00:11:40.027 に答える
10

!!次のような他のいくつかの選択肢と比較すると、非常に明確だと思います。

if (foo)
  bar = 1;
else
  bar = 0;

またbar = foo ? 1 : 0;

!!正確に 1 つのことを行うため、非常に明確です。

于 2012-05-02T00:15:12.443 に答える
5

この正確な場合:

bool bValue = !!otherValue;

書く必要はありません!!。それらがなくても正常に動作します。

bool bValue = otherValue;

ほとんどの場合、暗黙のキャストがいいと思います。

于 2012-05-02T00:11:16.963 に答える