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
Данная диагностика классифицируется как:
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6113. |