Правый операнд оператора сдвига должен лечь в нуле области значений меньше, чем ширина в битах существенного типа левого операнда
Правый операнд оператора сдвига должен лечь в нуле области значений меньше, чем ширина в битах существенного типа левого операнда.
Рассмотрите следующий оператор:
var = abc << num;
abc
является 16-битным целым числом, то num
должен быть в области значений 0–15, (неотрицательный и меньше чем 16). Если num
отрицателен или больше, чем 16, то поведение сдвига не определено.В Polyspace® числа, которыми управляют в предварительной обработке директив, 64 бита шириной. Допустимая область значений сдвига между 0 и 63. Когда битовые поля в сложном выражении, Polyspace расширяет эту проверку на ширину поля битового поля или ширину базового типа.
Сумма сдвига больше, чем size
.
Сумма сдвига отрицательна.
Правильный операнд оператора сдвига должен лечь в нуле области значений меньше, чем ширина в битах существенного типа левого операнда.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: Выражения |
Категория: необходимый |
Категория AGC: необходимый |
Язык: C90, C99 |