[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