Постоянное значение попадает за пределы области значений беззнакового целого типа данных
Этот дефект возникает, когда вы присваиваете константу времени компиляции беззнаковой целочисленной переменной, тип данных которой не может включать значение. Система координат 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++ |
По умолчанию: Off |
Синтаксис командной строки
: UINT_CONSTANT_OVFL |
Влияние: Низкое |
ИДЕНТИФИКАТОР CWE: 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