Avertissement C6235
('constante non nulle' || 'expression') est toujours une constante non nulle
Cet avertissement indique qu’une valeur constante autre que zéro a été détectée sur le côté gauche d’une opération logique ou qui se produit dans un contexte de test. Le côté droit de l’opération logique n’est pas évalué, car l’expression résultante prend toujours la valeur true. Cette fonctionnalité de langage est appelée « évaluation en court-circuit ».
Notes
Une valeur constante non nulle, autre qu’une valeur, suggère que l’opérateur BITwise-AND (&
) a pu être prévu. Cet avertissement n’est pas généré pour l’idiome commun lorsque la constante non nulle est 1, en raison de son utilisation pour activer sélectivement les chemins de code. Toutefois, elle est générée si la constante non nulle prend la valeur 1, par exemple 1+0
.
Nom de l’analyse du code : NONZEROLOGICALOR
Exemple
Le code suivant génère cet avertissement, car INPUT_TYPE
il s’agit de 2 :
#define INPUT_TYPE 2
void f(int n)
{
if(INPUT_TYPE || n) //warning C6235 issued
{
puts("Always gets here");
}
else
{
puts("Never gets here");
}
}
Le code suivant utilise l’opérateur BITwise-AND (&
) pour corriger cet avertissement :
#define INPUT_TYPE 2
void f(int n)
{
if((INPUT_TYPE & n) == 2)
{
puts("bitwise-AND comparison true");
}
else
{
puts("bitwise-AND comparison false");
}
}
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour