Avertissement du compilateur (niveau 4) C4800

Visual Studio 2019 et ultérieur :

Conversion implicite de 'type' en bool. Perte d’informations possible

C4800 est un avertissement de niveau 3 dans Visual Studio 2015 et versions antérieures :

'type' : forcer la valeur à bool 'true' ou 'false' (avertissement de performances)

Cet avertissement est généré lorsqu’une valeur est implicitement convertie en type bool. En règle générale, ce message est dû à l’affectation de int variables à bool des variables où la int variable contient uniquement des valeurs true et false, et peut être redeclarée en tant que type bool. Si vous ne pouvez pas réécrire l’expression pour utiliser le type bool, vous pouvez ajouter «!=0 » à l’expression, ce qui donne le type boold’expression. Le cast de l’expression en type bool ne désactive pas l’avertissement, qui est par conception.

Cet avertissement n’est pas émis dans Visual Studio 2017.

Cet avertissement est désactivé par défaut à partir de Visual Studio 2019. Utilisez /wn4800 pour activer C4800 comme avertissement de niveau n ou /Wall pour activer tous les avertissements désactivés par défaut. Pour plus d’informations, consultez Avertissements du compilateur désactivés par défaut.

Exemple

L’exemple suivant génère l’erreur C4800 et montre comment la corriger :

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

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

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