Share via


編譯器警告 (層級 4) C4800

Visual Studio 2019 及更新版本:

從 ' type ' 隱含轉換成 bool。 可能的資訊遺失

C4800 是 Visual Studio 2015 和更早版本中的層級 3 警告:

' type ' :強制值為 bool 'true' 或 'false' (效能警告)

當值隱含轉換成 類型 bool 時,就會產生這個警告。 一般而言,此訊息是由將 int 變數指派給 bool 變數,其中 int 變數只包含 值 truefalse ,而且可以重新宣告為 類型 bool 。 如果您無法重寫運算式以使用 類型 bool ,則可以將 「 !=0 」 新增至運算式,以提供運算式類型 bool 。 將運算式轉換成類型 bool 並不會停用設計警告。

Visual Studio 2017 中不會發出此警告。

從 Visual Studio 2019 開始,預設會關閉此警告。 使用 /w n 4800 啟用 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++;
}