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