暗黙の変換の逆に変換するので、intをboolに変換するためにstatic_cast
を使用しても大丈夫ではありませんが、それでも警告が表示されますか?
例:
MSVC++ 8
bool bit = static_cast<bool>(100);
変換a => bが暗黙的であるという理由だけで、逆の実行可能性については何も言いません、b => a。
あなたの場合、キャストするべきではありません。明白なことをしてください:比較してください:
bool result = int_value != 0;
これは、int
をbool
に変換する唯一の論理的に正しい方法であり、コードをはるかに読みやすくします(仮定が明示的になるため)。
ちなみに、逆も同じです。暗黙的にbool
からint
に変換するのは面倒です。マッピングを明示的にします。
int result = condition ? 1 : 0;
それはあなたとあなたのコンパイラの間ですが、マイクロソフトはあなたが書くべきだと考えています:
i != 0
どちらよりも優先して:
(bool)i
または
static_cast<bool>(i)
それを好む考えられる理由は次のとおりです。
malloc
を呼び出した後、if (buf != NULL)
よりもif (buf != 0)
またはif (buf)
を実行することを好みます。明示的にキャストしたときになぜ発生するのかはわかりませんが(パフォーマンスの警告だったと思いますか?)、警告を回避するために通常は次のようなコードを使用します。
int i;
bool b = (0!=i);
これは警告を与えることはありません。