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...
}
}