コンパイラの警告 (レベル 4) C4800
Visual Studio 2019 以降:
'type' からブール型への暗黙的な変換です。 情報が損失している可能性があります
Visual Studio 2015 以前では、C4800 は以下のレベル 3 の警告です。
'type': ブール値を 'true' または 'false' に強制的に設定します (警告の処理)
この警告は、値が暗黙的に型 bool
に変換されるときに生成されます。 通常、このメッセージは、int
変数に値 true
と false
のみが含まれ、型 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++;
}