what's this???

Discussion in 'C++' started by questions, Nov 8, 2008.

  1. questions

    questions Guest

    Today when I build a program,the compiler tells me there is no
    error,but when I run it ,it shows " 1.#INF00000",what's the
    meaning??????The program is as follows:
    #include<stdio.h>
    int main()
    { int x,y;
    int w=0;
    long double z=0;

    for(x=0;x<=10;x++)

    {if(x==0)

    {w=1;}

    else

    {for(y=1;y<=x;y++)

    {w*=y;} }

    z+=(float)1/w;}



    printf("%.9Lf",z);


    return 0;}
     
    questions, Nov 8, 2008
    #1
    1. Advertisements

  2. questions

    Rolf Magnus Guest

    One question mark is enough. More makes the question just look silly.
    The meaning is probably that you are dividing by zero.
    The maximum value that w would reach probably a lot bigger than int
    can handle on your platform.
     
    Rolf Magnus, Nov 8, 2008
    #2
    1. Advertisements

  3. -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1
    It looks like "int" is too small to fit the value you assign to w. You
    should check which type is sufficient (limits.h). According to C++
    standard the largest integer type is unsigned long int and the largest
    floating point type is long double. In fact, the second one was enough
    to made this code working on my implementation.

    I'd suggest you to format your code in an easier to read way.

    Pawel Dziepak
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.9 (GNU/Linux)
    Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

    iEYEARECAAYFAkkVezgACgkQPFW+cUiIHNpFuACdFenI7FQvVzOB5VcK1TWfQIy8
    uOsAnAsW8j1HozMc4oaxu5JAk4fkSftA
    =pYqQ
    -----END PGP SIGNATURE-----
     
    Pawel Dziepak, Nov 8, 2008
    #3
  4. questions

    maverik Guest

    Should you post to the c.l.c instead of c.l.c++
    Looks like w is overflowed. Use long types / float, double / ...
     
    maverik, Nov 8, 2008
    #4
  5. overflow!!!
    You can see by this:

    #include<stdio.h>
    int main()
    {
    int x,y;
    int w=0;
    long double z=0;

    for(x=0;x<=10;x++)
    {
    if(x==0)
    {
    w=1;
    }
    else
    {
    for(y=1;y<=x;y++)
    {
    w*=y;
    }
    }
    printf( " w : %d \n", w );
    z+=(float)1/w;
    printf("%.9Lf\n",z);
    }
    printf("%.9Lf\n",z);
    return 0;
    }
     
    want.to.be.professer, Nov 8, 2008
    #5
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.