Chris Rode <[EMAIL PROTECTED]> writes:
[...]
> 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.
If you compiled with "-Wall" you'd have seen that the line I
marked with a (**) misses a "return"; currently, the function
"toot" returns an "unspecified" value when y != 20, thus
different versions of gcc may effectively produce different
values.
Conclusion, always compile with -Wall :-).
--
Guillaume Cottenceau
_______________________________________________
Redhat-devel-list mailing list
[EMAIL PROTECTED]
https://listman.redhat.com/mailman/listinfo/redhat-devel-list