eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Czy da się stwierdzić błąd "integer/floating overflow" v C++/ Visual Studio ?
Ilość wypowiedzi w tym wątku: 6

  • 1. Data: 2010-12-29 11:50:20
    Temat: Czy da się stwierdzić błąd "integer/floating overflow" v C++/ Visual Studio ?
    Od: "KrisB" <...@...pl>


    Coś czytałem na necie że C tego nie ma wbudowanego, ale nie chce mi się wierzyć.
    Nie ma jakiejś opcji kompilera (VStudio 2010 Ultimate) która by dodawała dodatkowy
    kod do kompilacji, który by informował mnie że
    nastąpiło przepełnienie typu liczbowego ?

    Jeśli nie od razu w momencie przepełnienia, to przynajmniej po wykonaniu całego
    programu ?

    Bo nie muszę tłumaczyć że jeśli taki błąd wystąpił przy liczeniu to cały wynik jest
    bez sensu, a chciałbym się przynajmniej
    dowiedzieć czy był ?


    Krzys


  • 2. Data: 2010-12-31 11:35:11
    Temat: Re: Czy da się stwierdzić błąd
    Od: " " <k...@g...SKASUJ-TO.pl>

    KrisB <...@...pl> napisał(a):

    >
    > Coś czytałem na necie że C tego nie ma wbudowanego, ale nie chce mi się wierzyć
    > .
    > Nie ma jakiejś opcji kompilera (VStudio 2010 Ultimate) która by dodawała dodatk
    > owy kod do kompilacji, który by informował mnie że
    > nastąpiło przepełnienie typu liczbowego ?

    Dla liczb zmiennoprzecinkowych mozna: http://www.devx.com/cplus/Article/34993/1954

    Dla integers, chyba nie bardzo:
    http://stackoverflow.com/questions/199333/best-way-t
    o-detect-integer-overflow-in-c-c

    KK

    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 3. Data: 2010-12-31 14:09:31
    Temat: Re: Czy da się stwierdzić błąd
    Od: "Wojciech \"Spook\" Sura" <s...@s...please.op.pl>

    Dnia 31-12-2010 o 12:35:11 <k...@g...skasuj-to.pl>
    napisał(a):

    > Dla integers, chyba nie bardzo:
    > http://stackoverflow.com/questions/199333/best-way-t
    o-detect-integer-overflow-in-c-c

    int __stdcall safeAdd(int i, int j)
    {
    int result;
    bool _valid;

    __asm
    {
    mov EAX, i;
    mov EBX, j;
    add EAX, EBX;
    jo overflow;
    mov _valid, 1;
    jmp end;

    overflow:
    mov _valid, 0;

    end:
    mov result, EAX;
    }

    if (_valid)
    printf("Added, result = %d\n", result);
    else
    printf("Overflow occured!\n");

    return result;
    }

    int main(int argc, char * argv[])
    {
    bool valid;
    int i = safeAdd(2147483646, 1);
    int j = safeAdd(2147483646, 2);

    getchar();
    }

    Przy czym są prostsze sposoby :)

    > KK

    Pozdrawiam -- Spook.

    --
    Używam klienta poczty Opera Mail: http://www.opera.com/mail/


  • 4. Data: 2010-12-31 14:43:08
    Temat: Re: Czy da się stwierdzić błąd
    Od: Tomasz Sowa <t...@t...NOSPAM.org>

    Dnia Fri, 31 Dec 2010 15:09:31 +0100, Wojciech "Spook" Sura napisał(a):

    > Przy czym są prostsze sposoby :)

    No można bez instrukcji skoku :)

    int __stdcall safeAdd(int i, int j)
    {
    int result;
    int _valid;


    #ifndef __GNUC__

    __asm
    {
    mov EAX, i
    mov EBX, j
    add EAX, EBX

    mov ebx, 0
    seto bl

    mov _valid, ebx
    mov result, EAX
    }

    #else

    __asm__ __volatile__(
    "add %%ebx, %%eax \n"
    "mov $0, %%ebx \n"
    "seto %%bl \n"

    : "=a" (result), "=b" (_valid)
    : "0" (i), "1" (j)
    : "cc" );

    #endif



    if ( _valid == 0 )
    printf("Added, result = %d\n", result);
    else
    printf("Overflow occured!\n");

    return result;
    }


    --
    Tomek
    http://www.ttmath.org


  • 5. Data: 2010-12-31 15:37:15
    Temat: Re: Czy da się stwierdzić błąd
    Od: " " <k...@g...SKASUJ-TO.pl>

    Wojciech \Spook\ Sura <s...@s...please.op.pl> napisał(a):

    > Dnia 31-12-2010 o 12:35:11 <k...@g...skasuj-to.pl> =

    [...]
    > Przy czym s=B1 prostsze sposoby :)

    No fajnie, ale to juz nie jest czyste C ;-)

    KK

    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 6. Data: 2010-12-31 16:38:11
    Temat: Re: Czy da się stwierdzić błąd
    Od: Mariusz Marszałkowski <m...@g...com>

    On 31 Gru, 15:09, "Wojciech \"Spook\" Sura"
    <s...@s...please.op.pl> wrote:
    > Dnia 31-12-2010 o 12:35:11   <k...@g...skasuj-to.pl>  
    >                 mov EAX, i;
    >                 mov EBX, j;
    >                 add EAX, EBX;
    >                 jo overflow;
    >                 mov _valid, 1;
    >                 jmp end;

    Czasami brakuje dostepu do flag na poziomie jezyka.
    Pozdrawiam

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: