In Steven Prata’s book "C Primer Plus", there’s a section on Type Conversions, wherein "The basic rules are" section has stated in rule 1:
Under K&R C, but not under current C, float is automatically converted to double.
http://www.9wy.net/onlinebook/CPrimerPlus5/ch05lev1sec5.html
Could someone explain what but not under current C means? Are there versions of C that auto-convert and versions that don’t?
I’m trying understand if I have an expression that mixes floats and doubles, can I rely on C to promote floats to doubles when it’s evaluated?
It must refer to the result of binary arithmetic operations of
float * floatformat. In the pre-standard versions of C operands of such expressions were promoted todoubleand the result haddoubletype.For example, here’s a quote from “C Reference Manual”
In C89/90 already this behavior was changed and
float * floatexpressions producefloatresult.