Переполнение - это когда результат арифметической операции не вписывается в тип данных операции. Вы можете переполниться байтовым целым числом без знака, если добавите 255 + 1, потому что результат (256) не помещается в 8 битах байта.
Вы можете иметь переполнение числом с плавающей запятой, если результат операции с плавающей запятой слишком велик для представления в показателе типа данных с плавающей запятой или мантиссе.
Вы также можете иметь underflow с типами с плавающей запятой, когда результат операции с плавающей запятой слишком small для представления в данном типе данных с плавающей запятой. Например, если тип данных с плавающей запятой может обрабатывать показатели в диапазоне от -100 до +100, и вы возводите в квадрат значение с показателем -80, результат будет иметь показатель около -160, который не будет соответствовать заданный тип данных с плавающей запятой.
Вам нужно беспокоиться о переполнениях и недополнениях в вашем коде, потому что он может быть тихим убийцей: ваш код дает неверные результаты, но может не сигнализировать об ошибке.
Возможность безопасного игнорирования переполнений во многом зависит от характера вашей программы - рендеринг пикселов экрана из трехмерных данных имеет гораздо больший допуск к числовым ошибкам, чем, скажем, финансовые расчеты.
Проверка переполнения часто отключается в настройках компилятора по умолчанию. Зачем? Потому что дополнительный код для проверки переполнения после каждой операции занимает время и пространство, что может ухудшить производительность вашего кода во время выполнения.
Сделайте себе одолжение и хотя бы разработайте и протестируйте свой код с включенной проверкой переполнения.