Chris, As all have said, your missing the return. Another mistake in my opinion is using == with floats. You cannot depend on that to work. This is just the nature of floating point numbers. In your case b is probably 20.00000000000001 or something like it. The printf is showing 20.000000 because it defaults to 6 digits of accuracy past the decimal. Try your code with %15.15f and you will see all the digits. Anyway, it has been a while since I have worked much with floats, so I don't remember if there is helper function / macro for this or not. If not, you can define a simple range macro: #define DELTA 0.000001 #define range(target, x) ((x) < (target) - (DELTA) ? FALSE : ((x) > (target) + (DELTA) ? FALSE : TRUE)) if (range(20, f)) Greg Freemyer Internet Engineer Deployment and Integration Specialist Compaq ASE - Tru64 Compaq Master ASE - SAN Architect The Norcross Group www.NorcrossGroup.com >> I'm honestly not trying to resurrect some gcc 2.96 flame war or anything >> here, but I'm not a very seasoned C programmer, and I've run across an >> inconsistancy between Red Hat's version of gcc, and gcc 2.95.4 on a Debian >> >> system. Consider the following uninspired, pointless piece of code: >> #include <stdio.h> >> float toot(int, float); >> main() { >> int a = 4; >> float b = 5; >> float result = 0; >> result = toot(a, b); >> printf("%f\n", result); >> } >> float toot(int x, float y) { >> if (y == 20) { >> return y; >> } else { >> toot(x, x*y); >> } >> } >> Compiled with Red Hat's gcc 2.96, I get "nan" (however, If I take out >> the recursive call, and just return x*y, I get 20.000000). >> Compiled with Debian's 2.95.4, I get 20.000000. >> Can anybody explain to me (a) why, and (b) if there's something inherently >> >> wrong about what I'm doing that would cause this to fail on a Red Hat >> system? I know the code is pointless, but it's an extremely dumbed down >> version of a more complex problem exhibiting the exact same behavior. >> Thanks in advance for any insights that can be provided. Like I said, I'm >> >> not trying to restart an old flame war, or anything -- I'm just a newbie >> to C, who is honestly curious about what is going on under the covers to >> cause the inconsistency. >> --Chris. >> _______________________________________________ >> Redhat-devel-list mailing list >> Redhat-devel-list@redhat.com >> https://listman.redhat.com/mailman/listinfo/redhat-devel-list _______________________________________________ Redhat-devel-list mailing list Redhat-devel-list@redhat.com https://listman.redhat.com/mailman/listinfo/redhat-devel-list