On 27 February 2014 12:09, erik quanstrom <quanstro@quanstro.net> wrote:
did they abolish the rule that float is promoted to double
on function call?  or is this the equivalent of char fu(char) vs
int fu(int).

if you use the original declaration syntax of 40 years ago,
float must be promoted to double because the caller won't know the type,
but the ANSI declarator syntax that everyone ought to be using allows
the distinction between float and double to be maintained, and it is.
compare

void
g(float a)
{
g(a);    /* a is float */
}

void
h(a)
float a;
{
h(a);    /* a is double */
}