[th/gcc4] apps fixing guide #1 - signed overflow.

Jacek Konieczny jajcus w jajcus.net
Pon, 24 Kwi 2006, 15:28:11 CEST


On Mon, Apr 24, 2006 at 01:09:56PM +0200, Andrzej Krzysztofowicz wrote:
> Heh. Masz wczytac dwie liczby N-bitowe ze znakiem, ktorych iloczyn tez
> bedzie liczba N-bitowa. Jaki nalozysz warunek, aby nie dopuscic do
> przepelnienia? N w danym kontekscie wynosi 8*sizeof(dana).
> dana moze byc dowolnego typu...
 
Będę unikał takiej sytuacji i o ile to możliwe wykonywał działanie
z wynikiem N*2 bitowym. Wtedy łatwo sprawdzić, czy się wynik w N bitach
mieści.

> > #include <limits.h>
> > 
> > ...i użycie *_MIN i *_MAX mnie się wydaje najbardziej sensownym i oczywistym rozwiązaniem.
> 
> Jasne. Jakiego *_MAX/*_MIN uzyjesz w definicji makra, ktore ma dzialac dla
> danych dowolnego typu ?

A co to, metaprogramowanie w C? Jakoś nie widzę miejsca na takie makro
w eleganckim kodzie.

Poza tym, teraz kompilator generował kod który to przepełnienie jakoś
sprawdzał. To samo zapewne można zapisać w C, w tych kilku przypadkach,
w których to komuś jest rzeczywiście potrzebne. Ja się cieszę, że
kompilator nie będzie już generował niepotrzebnego (z punktu widzenia
mojego programu) kodu.

A cała dyskusja już trochę off-topic schodzi...

Pozdrowienia,
        Jacek


Więcej informacji o liście dyskusyjnej pld-devel-pl