By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,434 Members | 1,858 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,434 IT Pros & Developers. It's quick & easy.

what's this???

P: n/a
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;}
Nov 8 '08 #1
Share this Question
Share on Google+
4 Replies


P: n/a
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

questions wrote:
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+cUiIHNpFuACdFenI7FQvVz OB5VcK1TWfQIy8
uOsAnAsW8j1HozMc4oaxu5JAk4fkSftA
=pYqQ
-----END PGP SIGNATURE-----
Nov 8 '08 #2

P: n/a
questions wrote:
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.

Nov 8 '08 #3

P: n/a
#include<stdio.h>
z+=(float)1/w;}
printf("%.9Lf",z);
Should you post to the c.l.c instead of c.l.c++
what's the meaning??????
Looks like w is overflowed. Use long types / float, double / ...
Nov 8 '08 #4

P: n/a
On 11月8日, 下午5时37分, questions <mengqidhu...@yahoo.cnwrote:
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;
}

Nov 8 '08 #5

This discussion thread is closed

Replies have been disabled for this discussion.