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 bool
d’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++;
}