Compartilhar via


C6286

Aviso C6286: (< diferente de zero constante > || <expression>) é sempre uma constante diferente de zero. <expression> nunca é avaliado e pode ter efeitos colaterais

Este aviso indica que uma constante diferente de zero foi detectada no lado esquerdo de uma lógica- ou operação ocorre em um contexto de teste. A expressão resultante sempre retornará TRUE. Além disso, o lado direito da expressão parece ter efeitos colaterais, e eles serão perdidos.

Este aviso indica que você talvez queira examinar o lado direito da expressão cuidadosamente para garantir que os efeitos colaterais necessários para a funcionalidade adequada não são perdidos.

O (!0 || <expression>) construção é comumente usada para forçar a execução de um bloco controlado.

Exemplo

O código a seguir gera este aviso:

#include <stdlib.h>
#include <stdio.h>
#define INPUT_TYPE 1 

int test();

void f()
{
  if (INPUT_TYPE || test()) 
  {
    puts("INPUT_TYPE == 1, expression not evaluated");
    // code...
  }
  else
  {
    puts("INPUT_TYPE == 0. Call to test() returned 0");
    // code...
  }
}

O código a seguir mostra uma solução possível por quebra de if a instrução em duas partes separadas:

#include <stdlib.h>
#include <stdio.h>
#define INPUT_TYPE 1 

int test();

void f()
{
  int i;
  if (INPUT_TYPE) 
  {
    i = test();
    // code...
  }
  else
  {
    puts("INPUT_TYPE false");
    // code...
  }
}

Consulte também

Referência

Logical OR Operator: ||