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

Jakub Bogusz qboosh w pld-linux.org
Sob, 22 Kwi 2006, 16:43:35 CEST


On Sat, Apr 22, 2006 at 11:24:48AM +0200, Paweł Sikora wrote:
> ostatnio widzę, że dużo na bugzilli gcc ludzie zgłaszają dużo
> błędów w stylu "moja aplikacja na gcc4 robi kuku, a na 3.x było ok".
> bardzo często są ta programy po prostu błędne podług standardów,
> stąd też postanowiłem nieco przybliżyć ten temat deweloperom pld,
> by szybciej i łatwiej w Th naprawiać niespodziewane zachowanie
> aplikacji, tudzież kuku zwane potocznie GPF-em :)
> 
> rozważmy pierwszy załączony przykład:
> 
> $ g++ signed_overflow_1.cpp; ./a.out
> 
> b      = (0x80000000) -2147483648
> 10 - b = (0x8000000a) -2147483638 < 0 is true.
> b - 10 = (0x7ffffff6) +2147483638 < 0 is true.
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>     tu zapewne niektórym zapalił się pytajnik
> i myslą sobie jak do cholery to się mogło stać :)
> 
> pozwole sobię zacytować standard:
> 
> [ cite C++ standard / $5.5 ]

To dotyczy tylko C++ czy także C?
Gdzieś widziałem sprawdzanie przepełnienia zmiennej przez porównanie
((x+n) < x) albo ((x+n) < 0).


-- 
Jakub Bogusz    http://qboosh.cs.net.pl/


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