[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