編譯器警告 (層級 4) C4800
Visual Studio 2019 及更新版本:
從 ' type ' 隱含轉換成 bool。 可能的資訊遺失
C4800 是 Visual Studio 2015 和更早版本中的層級 3 警告:
' type ' :強制值為 bool 'true' 或 'false' (效能警告)
當值隱含轉換成 類型 bool
時,就會產生這個警告。 一般而言,此訊息是由將 int
變數指派給 bool
變數,其中 int
變數只包含 值 true
和 false
,而且可以重新宣告為 類型 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++;
}