Поделиться через


C6286

Обновлен: Ноябрь 2007

C6286

Предупреждение C6286. (<ненулевая константа> || <выражение>) всегда равно ненулевой константе. <выражение> никогда не вычисляется и может иметь побочные эффекты

Данное предупреждение указывает, что в левой части операции логического И, используемой в контексте проверки, обнаружена ненулевая константа. Результирующее выражение всегда равно значению TRUE. Кроме того, правая часть выражения, вероятно, имеет побочные эффекты, которые будут потеряны.

Это предупреждение указывает на необходимость тщательного изучения правой части выражения с целью проверки того, что все побочные эффекты, требуемые для правильного функционирования кода, не потеряны.

Конструкция (!0 || <expression>) обычно используется для принудительного выполнения управляемого блока.

Пример

Данное предупреждение создается в следующем коде:

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

В следующем коде показано одно из возможных решений, которое заключается в разбиении оператора if на две отдельные части:

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

См. также

Ссылки

Logical OR Operator: ||

Предупреждение компилятора (уровень 4) C4127