[この質問は関連していますが、これと同じではありません。]
特定の型の値をブール式として使用しようとすると、警告が表示されます。警告を抑制するのではなく、三項演算子 ( ?:
) を使用して 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 *
またはdouble
forなどT
) でも同様に安全ですか?
!!t
スタイルが良いかどうかは問いません。と意味的に異なるかどうかを尋ねていt ? true : false
ます。