Значение константы выходит за пределы диапазона целочисленного типа данных
Этот дефект возникает при назначении константы времени компиляции целочисленной переменной со знаком, тип данных которой не может соответствовать значению. Один n-разрядное целое число со знаком содержит значения в диапазоне [-2.n-1, 2n-1-1]
Например, c является 8-битной подписью char переменная, которая не может содержать значение 255.
signed char c = 255;
Чтобы определить размеры фундаментальных типов, Bug Finder использует вашу спецификацию для Target processor type (-target).
Поведение по умолчанию для постоянных переполнений может варьироваться между компиляторами и платформами. Сохранение постоянных переполнений может снизить переносимость кода.
Даже если компиляторы обтекают переполненные константы предупреждением, поведение обтекания может быть непреднамеренным и привести к неожиданным результатам.
Проверьте, соответствует ли постоянное значение предполагаемому значению. Если значение является правильным, используйте другой, возможно более широкий тип данных для переменной.
| Группа: Числовые |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки:
INT_CONSTANT_OVFL |
| Воздействие: среднее |
| CWE ID: 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