Visual Studio 2019 及更高版本:
从“type”隐式转换为布尔。 可能的信息丢失
C4800 是 Visual Studio 2015 及更低版本中的级别 3 警告:
“type”:强制值为布尔“true”或“false”(性能警告)
注解
当值隐式转换为类型 bool 时,将生成此警告。 通常,此消息是由将 int 变量分配给 bool 变量引起的(其中 int 变量仅包含值 true和 false),并且可以重新声明为类型 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++;
}