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
>> [EMAIL PROTECTED]
>> https://listman.redhat.com/mailman/listinfo/redhat-devel-list
_______________________________________________
Redhat-devel-list mailing list
[EMAIL PROTECTED]
https://listman.redhat.com/mailman/listinfo/redhat-devel-list