C6286
upozornění C6286: (<non-zero constant> || <expression>) je vždy nenulová konstanta. <expression> nikdy není vyhodnocen a může mít vedlejší účinky
Toto upozornění signalizuje, že konstanta nulová byl nalezen na levé straně logické- nebo operaci, která probíhá v kontextu test.Vždy výsledný výraz je vyhodnocen jako TRUE.Kromě toho výraz pravé straně se zdá mít vedlejší účinky a budou ztraceny.
Toto upozornění signalizuje, že můžete prozkoumat v pravé části výrazu pečlivě zajistit, aby nebyly ztraceny žádné vedlejší účinky, potřebné pro správnou funkci.
(!0 || <expression>) Konstrukce se běžně používá vynutit spuštění řízené bloku.
Příklad
Následující kód generuje 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 pomocí dělení jedním z možných řešení if prohlášení na dvě samostatné části:
#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...
}
}