Compartilhar via


C6288

Aviso C6288: operador incorreto: inclusão mútua sobre & & é sempre zero.Foi você pretende usar | | em vez disso?

Este aviso indica que, em uma expressão de teste, uma variável que está sendo testada contra duas constantes diferentes e o resultado depende de ambas as condições a serem verdadeiros.O código nesses casos indica que o propósito do programador não for capturado corretamente.É importante examinar o código e corrigir o problema; Caso contrário, seu código não irão se comportar da maneira esperada.

Esse problema geralmente é causado por meio de &&; no lugar de ||, mas também podem ser causados por meio de == onde != foi criada.

Exemplo

O código a seguir gera este aviso:

void f(int x)
{
  if ((x == 1) && (x == 2)) // warning
  {
    // code ...
  }
}

Para corrigir esse aviso, use o código a seguir:

void f(int x)
{
     if ((x == 1) || (x == 2)) 
     {
          // logic
     }
    
    /* or */
    if ((x != 1) && (x != 2))
    {
        // code ...
    }
}

A ferramenta de análise não avisa se a expressão possui efeitos colaterais.