Partilhar via


Aviso do compilador (nível 4) C4800

Visual Studio 2019 e posterior:

Conversão implícita de 'tipo' para bool. Possível perda de informação

C4800 é um aviso de nível 3 no Visual Studio 2015 e anteriores:

'type' : forçar o valor a bool 'true' ou 'false' (aviso de desempenho)

Observações

Este aviso é gerado quando um valor é implicitamente convertido em tipo bool. Normalmente, esta mensagem é causada pela atribuição de variáveis int a variáveis bool, em que a variável int contém apenas os valores true e false e pode ser redeclarada como tipo bool. Se não for possível reescrever a expressão para usar o tipo bool, então você pode adicionar "!=0" à expressão, que dá o tipo boolde expressão . Converter a expressão para o tipo bool não desativa o aviso, que é por design.

Este aviso não é emitido no Visual Studio 2017.

Este aviso está desativado por padrão a partir do Visual Studio 2019. Use /wn4800 para habilitar o C4800 como um aviso de nível n ou /Wall para habilitar todos os avisos que estão desativados por padrão. Para obter mais informações, consulte Avisos do compilador que estão desativados por padrão.

Example

O exemplo a seguir gera C4800 e mostra como corrigi-lo:

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

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

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