Avertissement C6317
Opérateur incorrect : non logique ( !) n’est pas interchangeable avec un complément (~)
Notes
Cet avertissement indique qu’un non logique (!
) est appliqué à une constante susceptible d’être un indicateur de bits. Le résultat de non logique n’est pas booléen ; Il est incorrect d’appliquer l’opérateur au niveau du bit et (&
) à une valeur booléenne. Utilisez l’opérateur ones-complement (~
) pour retourner des indicateurs.
Nom de l’analyse du code : NOTNOTCOMPLEMENT
Exemple
Le code suivant génère cet avertissement :
#define FLAGS 0x4004
void f(int i)
{
if (i & !FLAGS) // warning
{
// code
}
}
Pour corriger cet avertissement, utilisez le code suivant :
#define FLAGS 0x4004
void f(int i)
{
if (i & ~FLAGS)
{
// code
}
}
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