V3109. The same sub-expression is present on both sides of the operator. The expression is incorrect or it can be simplified.


Анализатор обнаружил одинаковые подвыражения в левой и правой части оператора сравнения (comparison operator). Возможно, эта операция содержит ошибку, не имеет смысла, либо может быть упрощена.

Рассмотрим пример. Допустим у нас имеется выражение следующего вида:

if ((x – y) >= (x - z)) {};

Очевидно, что использование переменной 'x' в данном фрагменте кода является избыточным и переменная может быть сокращена в левой и правой частях выражения. Тогда упрощенный код может выглядеть так:

if (y <= z) {};

Рассмотрим следующий пример:

if (x1 == x1 + 1) {};

Данное выражение уже содержит явную ошибку, так как будет ложным при любом значении переменной 'x1'. Возможно, здесь присутствует опечатка и корректный код мог бы выглядеть так:

if (x2 == x1 + 1) {};

Рассмотрим еще одно выражение:

if (x < x * y) {};

В данном выражении также может быть сокращена переменная 'x'. При этом упрощенное и более понятное выражение могло бы иметь вид:

if (y > 1) {};

Найденные ошибки

Проверено проектов
361
Собрано ошибок
13 417

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;