[th/gcc4] apps fixing guide #1 - signed overflow.
Andrzej Krzysztofowicz
ankry w green.mif.pg.gda.pl
Pon, 24 Kwi 2006, 17:55:59 CEST
Jacek Konieczny wrote:
> 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.
Kto twierdzi, ze kod ktory przyjdzie poprawiac jest elegancki?
Po prostu sie zastanawiam, co zrobic, zeby cos takiego zmusic do dzialania, jak
przyjdzie sie z tym zmagac. Na pewno gdzies widzialem takie kwiatki majace
za zadanie uczynienie programu "bardziej przenosnym" (niezaleznym od OS,
kompilatora, architektury, wprowadzanych danych itp.)
> 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...
Troche tak.
--
=======================================================================
Andrzej M. Krzysztofowicz ankry w mif.pg.gda.pl
phone (48)(58) 347 14 61
Faculty of Applied Phys. & Math., Gdansk University of Technology
Więcej informacji o liście dyskusyjnej pld-devel-pl