Partilhar via


C6286

Aviso C6286: (< constante diferente de zero > || <expressão>) é sempre uma constante diferente de zero.<expressão>nunca é avaliado e pode causar efeitos colaterais

Este aviso indica que um não - zero constante foi detectado no lado esquerdo de uma lógica - ou operação ocorre em um contexto de teste.A expressão resultante sempre é avaliada como TRUE.Além disso, o lado direito da expressão parece ter efeitos colaterais e elas serão perdidas.

Este aviso indica que convém examinar o lado direito da expressão cuidadosamente para garantir que quaisquer efeitos colaterais necessários para a funcionalidade adequada não sejam perdidos.

The (!0 || <expression>) construção costuma ser 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 pelo quebrar if demonstrativo 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

Lógica ou operador: ||

Compilador C4127 de aviso (nível 4)