Aviso do compilador (nível 4) C4800
Visual Studio 2019 e posterior:
Conversão implícita de 'type' em bool. Possível perda de informações
O C4800 é um aviso de nível 3 no Visual Studio 2015 e anterior:
'type' : forçando o valor para bool 'true' ou 'false' (aviso de desempenho)
Esse aviso é gerado quando um valor é convertido implicitamente em tipo bool
. Normalmente, essa mensagem é causada pela atribuição de variáveis int
a variáveis bool
, em que a variável int
contém apenas valores true
e false
, e pode ser reenviada como tipo bool
. Se você não conseguir reescrever a expressão para usar o tipo bool
, poderá adicionar "!=0
" à expressão, o que fornece o tipo de expressão bool
. A conversão da expressão para o tipo bool
não desabilita o aviso, que é padrão.
Esse aviso não é emitido no Visual Studio 2017.
Esse aviso está desativado por padrão a partir do Visual Studio 2019. Use /Wall para habilitar todos os avisos desativados por padrão ou /wn4800 para habilitar C4800 como um aviso de nível n. Para obter mais informações, confira Avisos do compilador desativados por padrão.
Exemplo
O seguinte exemplo gera o erro 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++;
}