[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