[この質問は関連していますが、これと同じではありません。]
特定の型の値をブール式として使用しようとすると、警告が表示されます。警告を抑制するのではなく、三項演算子 ( ?:) を使用して bool に変換することがあります。2 つの not 演算子 ( !!) を使用すると、同じことが行われるようです。
これが私が意味することです:
typedef long T; // similar warning with void * or double
T t = 0;
bool b = t; // performance warning: forcing 'long' value to 'bool'
b = t ? true : false; // ok
b = !!t; // any different?
では、double-not テクニックは本当に同じことをするのでしょうか? 三元法より多かれ少なかれ安全ですか?この手法は、非整数型 ( withvoid *またはdoubleforなどT) でも同様に安全ですか?
!!tスタイルが良いかどうかは問いません。と意味的に異なるかどうかを尋ねていt ? true : falseます。