From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 22 Feb 2006 14:51:41 +0300 From: Damir Shayhutdinov To: Andrey Rybak Message-ID: <20060222115141.GG19814@damir.rnd.local> References: <43FC4A2E.5030302@iop.kiev.ua> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <43FC4A2E.5030302@iop.kiev.ua> User-Agent: Mutt/1.4.2.1i X-Operating-System: ALT Linux Master 2.4 (Citron) X-OriginalArrivalTime: 22 Feb 2006 11:54:33.0109 (UTC) FILETIME=[BEC18450:01C637A6] Cc: =?koi8-r?B?89DJ08/LINLB09PZzMvJINDPIMnT0M/M2NrP18HOycAgxMnT1NLJwtXU?= =?koi8-r?B?ydfP1w==?= ALT Linux Subject: Re: [Comm] value overflow on C X-BeenThere: community@lists.altlinux.org X-Mailman-Version: 2.1.6 Precedence: list Reply-To: ALT Linux Community List-Id: ALT Linux Community List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Feb 2006 11:54:33 -0000 Archived-At: List-Archive: List-Post: 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