コンパイラの警告 (レベル 4) C4800

Visual Studio 2019 以降:

'type' からブール型への暗黙的な変換です。 情報が損失している可能性があります

Visual Studio 2015 以前では、C4800 は以下のレベル 3 の警告です。

'type': ブール値を 'true' または 'false' に強制的に設定します (警告の処理)

この警告は、値が暗黙的に型 bool に変換されるときに生成されます。 通常、このメッセージは、int 変数に値 truefalse のみが含まれ、型 bool として再宣言できる変数 bool に変数 int を割り当てることによって発生します。 型 bool を使用するように式を書き直すことができない場合は、式に "!=0" を追加します。これにより、式の型 bool が指定されます。 式を型 bool にキャストしても、警告は無効になりません。これは仕様です。

この警告は Visual Studio 2017 では生成されません。

この警告は、Visual Studio 2019 以降では既定で無効になっています。 /wn4800 を使用して、レベル n の警告として C4800 を有効にするか、/Wall を使用して、既定で無効になっているすべての警告を有効にします。 詳細については、「既定で無効になっているコンパイラ警告」を参照してください。

次のサンプルでは C4800 が生成され、その修正方法が示されています。

// C4800.cpp
// compile with: /W4 /w44800
int main() {
   int i = 0;

   // To fix, instead try:
   // bool i = 0;

   bool j = i;   // C4800
   j++;
}