On 27 February 2014 12:09, erik quanstrom 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 */ }