Значение константы выходит за пределы диапазона целочисленного типа данных без знака
Этот дефект возникает при назначении константы времени компиляции целочисленной переменной без знака, тип данных которой не может соответствовать значению. Один n-разрядное беззнаковое целое число содержит значения в диапазоне [0, 2.n-1]
Например, c является 8-битным беззнаковым char переменная, которая не может содержать значение 256.
unsigned char c = 256;
Чтобы определить размеры фундаментальных типов, Bug Finder использует вашу спецификацию для Target processor type (-target).
В стандарте C указано, что перетекающие неподписанные целые числа должны быть обернуты (см., например, стандарт C11, раздел 6.2.5). Однако поведение обхода может быть непреднамеренным и привести к неожиданным результатам.
Проверьте, соответствует ли постоянное значение предполагаемому значению. Если значение является правильным, используйте для переменной более широкий тип данных.
| Группа: Числовые |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки:
UINT_CONSTANT_OVFL |
| Воздействие: Низкий |
| CWE ID: 128, 189, 190, 191 |
Find defects (-checkers) | Integer constant overflow | Integer conversion overflow | Integer overflow | Sign change integer conversion overflow | Unsigned integer conversion overflow | Unsigned integer overflow