[Comm] value overflow on C
Damir Shayhutdinov
=?iso-8859-1?q?damir_=CE=C1_tecon=2Eru?=
Ср Фев 22 14:51:41 MSK 2006
On Wed, Feb 22, 2006 at 01:25:34PM +0200, Andrey Rybak wrote:
> Привет коммунити!
> Вопрос по си.
> Есть необходимость определять, когда происходит превышение максимального
> значения стандартного типа при арифметических операциях.
> Типа такого: значение переменной errno становится равной ERANGE, если
> мат. функция (например pow() из math.h) имеет своим результатом значение
> больше, чем может быть представлено данным типом. Что-то подобное для
> операций сложения и умножения имеется?
> Эксперимент показал,что errno остается равным нулю при прибавлении
> единицы к максимальному int . И при выполнении прога никак не реагирует.
> Работает дальше, но с уже неверными величинами.
> Гугление и чтение Кернигана и Ричи не дали результата.
> Что посоветуете?
ИМХО глобально решить проблему можно только если использовать другие языки.
В случае целочисленных выражений проблему можно сгладить, просто взяв int
тип пошире (например, long long).
--
WBR,
Damir Shayhutdinov
Подробная информация о списке рассылки community