Condividi tramite


Avviso del compilatore (livello 4) C4800

Visual Studio 2019 e versioni successive:

Conversione implicita da 'type' a bool. Possibile perdita di informazioni

C4800 è un avviso di livello 3 in Visual Studio 2015 e versioni precedenti:

'type': forzatura del valore a bool 'true' o 'false' (avviso di prestazioni)

Questo avviso viene generato quando un valore viene convertito in modo implicito nel tipo bool. In genere, questo messaggio è causato dall'assegnazione di int variabili alle bool variabili in cui la int variabile contiene solo valori true e false, e potrebbe essere ridecredato come tipo bool. Se non è possibile riscrivere l'espressione per usare il tipo bool, è possibile aggiungere "!=0" all'espressione, che fornisce il tipo di boolespressione . Il cast dell'espressione al tipo bool non disabilita l'avviso, ovvero in base alla progettazione.

Questo avviso non viene generato in Visual Studio 2017.

Questo avviso è disattivato per impostazione predefinita a partire da Visual Studio 2019. Usare /wn4800 per abilitare C4800 come avviso di livello n o /Wall per abilitare tutti gli avvisi disattivati per impostazione predefinita. Per altre informazioni, vedere Avvisi del compilatore disattivati per impostazione predefinita.

Esempio

L'esempio seguente genera l'errore C4800 e mostra come risolverlo:

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

   // To fix, instead try:
   // bool i = 0;

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