C6316
Aviso C6316: operador incorreto: expressão testado é constante e diferente de zero.Bit a bit de uso- e para determinar se os bits forem definidos
Este aviso indica o uso de bit a bit- ou (|) ao bit a bit- e (&) deve ter sido usado.Bit a bit- ou adiciona bits para a expressão resultante, enquanto o bit a bit- e seleciona somente esses bits em comum entre os dois operadores.Testa a sinalizadores devem ser realizadas com bitwise-e ou um teste de igualdade.
Exemplo
O código a seguir gera este aviso:
#define INPUT_VALUE 2
void f( int Flags)
{
if (Flags | INPUT_VALUE) // warning
{
// code
}
}
Para corrigir esse aviso, use o código a seguir:
#define ALLOWED 1
#define INPUT_VALUE 2
void f( int Flags)
{
if ((Flags & INPUT_VALUE) == ALLOWED)
{
// code
}
}