# what's this???

Q

#### questions

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;}

R

#### Rolf Magnus

questions said:
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??????

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

P

#### Pawel Dziepak

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
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;}

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-----

M

W

#### want.to.be.professer

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;}

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;
}