Предупреждение C6286
('ненулевая константа' || "expression") всегда является ненулевой константой. Выражение никогда не вычисляется и может иметь побочные эффекты
Замечания
Это предупреждение указывает, что в левой части логического или тестового контекста обнаружена константа без нуля. Результирующее выражение всегда вычисляется как TRUE. Кроме того, правая сторона выражения, как представляется, имеет побочные эффекты, и они будут потеряны.
Вы можете тщательно изучить правую сторону выражения, чтобы убедиться, что любые побочные эффекты, необходимые для правильной функциональности, не теряются.
(!0 || <expression>)
Конструкция обычно используется для принудительного выполнения управляемого блока.
Имя анализа кода: NONZEROLOGICALORLOSINGSIDEEFFECTS
Пример
Следующий код создает это предупреждение:
#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...
}
}
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по