编译器警告(等级 4)C4800
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++;
}