Оператор сдвига при отрицательном значении
Этот дефект возникает, когда используется побитовый сдвиг для переменной, которая может иметь отрицательные значения.
Сдвигает отрицательные значения, перезаписывая знаковый бит, который идентифицирует число как отрицательное. Операция смены может привести к непредвиденным значениям.
Исправление зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Этот список событий используется для определения того, как сдвигаемая переменная получает отрицательные значения. Исправление может быть реализовано для любого события в последовательности. Если сведения о результатах не отображают историю событий, можно выполнить обратную трассировку, щелкнув правой кнопкой мыши параметры в исходном коде и просмотреть предыдущие связанные события. См. также раздел Интерпретация результатов поиска ошибок в интерфейсе пользователя Polyspace Desktop.
Чтобы устранить дефект, проверьте отрицательные значения перед операцией сдвига по битам и выполните соответствующую обработку ошибок.
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, добавьте комментарии к результату или коду, чтобы избежать другой проверки. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.
| Группа: Числовые |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки: SHIFT_NEG |
| Воздействие: Низкий |
| CWE ID: 189 |