Compartir a través de


Advertencia del compilador (nivel 4) C4800

Visual Studio 2019 y versiones posteriores:

Conversión implícita de "type" a bool. Posible pérdida de información

C4800 es una advertencia de nivel 3 en Visual Studio 2015 y versiones anteriores:

"type": forzar el valor a booleano "true" o "false" (advertencia de rendimiento)

Esta advertencia se genera cuando un valor se convierte implícitamente en el tipo bool. Por lo general, este mensaje se debe a la asignación de variables int a variables bool en las que la variable int solo contiene valores true y false, y se podría volver a declarar como del tipo bool. Si no puede reescribir la expresión para que use el tipo bool, no puede agregar "!=0" a la expresión, lo que proporciona el tipo de expresión bool. Convertir la expresión al tipo bool no deshabilita la advertencia, que es así por diseño.

Esta advertencia no se emite en Visual Studio 2017.

Esta advertencia está desactivada de manera predeterminada a partir de Visual Studio 2019. Use /wn4800 para habilitar la advertencia C4800 como una advertencia de nivel n, o bien use /Wall para habilitar todas las advertencias que están desactivadas de manera predeterminada. Para obtener más información, consulte Advertencias del compilador desactivadas de forma predeterminada.

Ejemplo

El error siguiente genera la advertencia C4800 y muestra cómo corregirla:

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

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

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