C6286
upozornění C6286: (< nulová konstantní > || <expression>) je vždy nula konstanta.<expression> nikdy vyhodnoceny a může mít vedlejší účinky
Toto upozornění znamená, že konstanta nula byl nalezen na levé straně logické- nebo operace v kontextu test.Vždy výsledný výraz vyhodnocen jako PRAVDIVÝ.Zdá se, že pravé straně výraz má vedlejší účinky a budou ztraceny.
Toto upozornění znamená, že může přezkoumat pravé straně výraz pečlivě, aby žádné vedlejší účinky, potřebné pro správnou funkčnost není ztracena.
(!0 || <expression>) Konstrukce běžně používané vynutit spuštění řízené bloku.
Příklad
Následující kód vygeneruje toto upozornění:
#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...
}
}
Následující kód ukazuje jedním z možných řešení podle rozdělení if prohlášení do dvou samostatných částí:
#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...
}
}