C6286
Aviso C6286: (<constante não nula> || <expressão>) é sempre uma constante não nula. <expressão> nunca é avaliada e pode ter efeitos colaterais
Esse aviso indica que uma constante diferente de zero esteve detectada no lado esquerdo da realização ou operação que ocorrem em um contexto de teste.A expressão resultante sempre avaliará COMO RETIFICAR.Além disso, o lado direito da expressão parece ter efeitos colaterais, e serão perdidos.
Esse aviso indicar que você queira examinar atentamente o lado direito da expressão para garantir que nenhum efeito colateral necessários para a funcionalidade adequada não sejam perdidos.
A construção de (!0 || <expression>) é usado 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 exemplo a seguir mostra o código uma solução possível recentes a instrução de if 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...
}
}