Advertencia C6317
Operador incorrecto: el no lógico (!) no es intercambiable con ones-complement (~)
Comentarios
Esta advertencia indica que se aplica un valor NOT lógico (!
) a una constante que es probable que sea una marca de bits. El resultado de no es booleano; es incorrecto aplicar el operador bit a bit y (&
) a un valor booleano. Use el operador complemento a unos (~
) para voltear marcas.
Nombre del análisis de código: NOTNOTCOMPLEMENT
Ejemplo
El código siguiente genera esta advertencia:
#define FLAGS 0x4004
void f(int i)
{
if (i & !FLAGS) // warning
{
// code
}
}
Para corregir esta advertencia, utilice el código siguiente:
#define FLAGS 0x4004
void f(int i)
{
if (i & ~FLAGS)
{
// code
}
}
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de