Compartilhar via


C6285

Aviso C6285: (<constante não nula> || <constante não nula>) é sempre uma constante não nula.Sua intenção era utilizar o operador e bit-a-bit?

Esse aviso indicar que dois valores constantes, ambos maior que um, foram detectados como argumentos para a realização ou a operação que ocorrem em um contexto de teste.Essa expressão sempre é TRUE.

Os valores maiores constantes de um sugerem que os argumentos a realização ou poderiam ser campos de bit.Considere se um operador bit a bit pode ser um operador mais apropriado nesse caso.

Exemplo

O código a seguir gera este aviso:

#include <stdio.h>
#define     TESTED_VALUE    0x37
#define     MASK            0xaa

void f()
{
  if (TESTED_VALUE || MASK) 
  {
    puts("(TESTED_VALUE || MASK) True");
    // code ...
  }
  else 
  {
    puts("(TESTED_VALUE || MASK) False");
    // code ...
  }
}

Para corrigir esse aviso, use o seguinte código:

#include <stdio.h>
#define     TESTED_VALUE    0x37
#define     MASK            0xaa

void f(int flag)
{
  if ((TESTED_VALUE & MASK)== flag)
  {
    puts("true");
    // code ...
  }
  else
  {
    puts("false");
    // code ...
  }
}

Consulte também

Referência

Expressões com operadores binários