C6235
Предупреждение C6235: (<ненулевая константа> || <выражение>) всегда является ненулевой константой.
Данное предупреждение означает, что в левой части операции логического ИЛИ, выполняемой в контексте проверки, обнаружено ненулевое константное значение, отличное от единицы. Правая часть операции логического ИЛИ не вычисляется, поскольку результирующее выражение всегда возвращает значение "true". Это называется "сокращенным вычислением".
Принимая во внимание наличие ненулевой константы, отличной от единицы, можно предположить, что, возможно, планировалось использовать оператор побитового И (&). Это предупреждение не возникает в распространенных случаях, когда ненулевая константа равна 1, поскольку этот способ применяется для выборочного включения ветвей кода. Однако предупреждение создается, если результат вычисления ненулевой константы равен 1, например 1+0.
Пример
В следующем коде возникает данное предупреждение, поскольку значение INPUT_TYPE равно 2:
#define INPUT_TYPE 2
void f(int n)
{
if(INPUT_TYPE || n) //warning 6235 issued
{
puts("Always gets here");
}
else
{
puts("Never gets here");
}
}
В следующем коде для устранения этого предупреждения используется оператор побитового И (&):
#define INPUT_TYPE 2
void f(int n)
{
if((INPUT_TYPE & n) == 2)
{
puts("bitwise-AND comparison true");
}
else
{
puts("bitwise-AND comparison false");
}
}