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