Sdílet prostřednictvím


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

Viz také

Referenční dokumentace

Logický operátor OR: ||