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 bool
espressione . 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++;
}