Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Feb 1998 11:38:51 -0600
From:      Steve Price <sprice@hiwaay.net>
To:        "Aryeh M. Friedman" <aryeh@void.rad-inet.com>
Cc:        freebsd-bugs@FreeBSD.ORG
Subject:   Re: misc/5856
Message-ID:  <34F5A8AB.3D0D0DF2@hiwaay.net>
References:  <199802261702.JAA16425@void.rad-inet.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Aryeh M. Friedman wrote:
> 
> This should be better doced in various places since I used to k&r where
> if no proto for a lib is found it assumes it is the same ret type as ther
> caller "expects" it to be
> ./

I'm pretty sure this is not the case.  In K&R style code you
will generally see something like the following:

main() {
    double atof(), foo;

    foo = atof("1.345");
    printf("%f", foo);
    return 0;
}

Which does indeed work as expected.

What may be confusing you is that in the absence of a declaration
a K&R compiler will assume that the return type is int, just as
it does with main function above.  So what you say will appear
true in every instance of a function that truly returns an int.

So in your example the absence of a declaration for atof causes
the compiler to assume atof returns an int which it in term tries
to convert to a double and assign to foo. In C this would be
equivalent to something like:

	foo = (double)((int)atof("1.345"));

Steve

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?34F5A8AB.3D0D0DF2>