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