编译器警告(等级 4)C4800

Visual Studio 2019 及更高版本:

从“type”隐式转换为布尔。 可能的信息丢失

C4800 是 Visual Studio 2015 及更低版本中的级别 3 警告:

type”:强制值为布尔“true”或“false”(性能警告)

当值隐式转换为类型 bool 时,将生成此警告。 通常,此消息是由将 int 变量分配给 bool 变量引起的(其中 int 变量仅包含值 truefalse),并且可以重新声明为类型 bool。 如果无法重写表达式以使用类型 bool,则可以将“!=0”添加到提供表达式类型 bool 的表达式中。 将表达式强制转换为类型 bool 不会禁用设计的警告。

Visual Studio 2017 中未发出此警告。

从 Visual Studio 2019 开始,此警告默认处于关闭状态。 使用 /wn4800 启用 C4800 作为级别 n 警告,或 使用 /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++;
}