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
can handle on your platform.
 
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-----
 
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;
}
 

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. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top