When you declare something as float why (I'm assuming all compilers do this or maybe this is standard behavior in C++) is it cast to double; for me VS issues a warning about precision loss. If you add the f suffix to the variable is it then just a float?
A little off topic but when would you want to use a float over a double?
The compiler isn't going to change code just because it thinks you meant something other than what you wrote. If you wrote a float on the left and a double on the right, as in float f = 0.1;, why should it replace that with float f = 0.1f; and not with double f = 0.1;?