# V6113. Suspicious division. Absolute value of the left operand is less than the value of the right operand.

Анализатор обнаружил операцию деления или вычисления остатка от деления с целыми числами, в которой абсолютное значение левого операнда всегда меньше абсолютного значения правого операнда. Такое выражение содержит ошибку или является избыточным.

Рассмотрим пример:

    int a = 5;
    int b = 10;
    int result = a / b;  // Результат: 0

В результате выполнения данного фрагмента кода переменная 'result' всегда будет равна нулю. Такие операции могут быть логическими ошибками: программист использовал некорректное значение или указал не ту переменную.

Если операнды указаны верно и требуется точное значение результата деления, исправить данный фрагмент кода можно путём явного приведения типов перед выполнением деления:

    int a = 5;
    int b = 10;
    double result = (double)a / b;  // Результат: 0.5

Подобная ситуация не будет ошибкой, когда операция деления выполняется с вещественными числами:

    double a = 5;
    double b = 10;
    double result = a / b;  // Результат: 0.5

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

    int a = 5;
    int b = 10;
    int result = a % b;  // Результат: 5

Данная диагностика классифицируется как:

CWE-682

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6113.