编译器警告(等级 3)C4800

更新:2007 年 11 月

错误消息

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

在分配了非 bool 值时或将非 bool 值强迫到类型 bool 中时生成此警告。通常,此消息是由于向 bool 变量分配 int 变量引起的,其中 int 变量仅包含 truefalse 值,并可重新声明为 bool 类型。如果您无法重写表达式以使用 bool 类型,则可以向该表达式中添加“!=0”,它可使表达式成为 bool 类型。将表达式转换为 bool 类型不会禁用警告,这是特意设计的。

下面的示例生成 C4800:

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

   // try..
   // bool i = 0;

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